home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / winbase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  151.7 KB  |  7,759 lines

  1. /************************************************************************
  2. *                                                                       *
  3. *   winbase.h -- This module defines the 32-Bit Windows Base APIs       *
  4. *                                                                       *
  5. *   Copyright (c) 1990-1996, Microsoft Corp. All rights reserved.       *
  6. *                                                                       *
  7. ************************************************************************/
  8. #ifndef _WINBASE_
  9. #define _WINBASE_
  10. #pragma option push -b -w-bbf
  11.  
  12.  
  13. //
  14. // Define API decoration for direct importing of DLL references.
  15. //
  16.  
  17. #if !defined(_ADVAPI32_)
  18. #define WINADVAPI DECLSPEC_IMPORT
  19. #else
  20. #define WINADVAPI
  21. #endif
  22.  
  23. #if !defined(_KERNEL32_)
  24. #define WINBASEAPI DECLSPEC_IMPORT
  25. #else
  26. #define WINBASEAPI
  27. #endif
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. /*
  34.  * Compatibility macros
  35.  */
  36.  
  37. #define DefineHandleTable(w)            ((w),TRUE)
  38. #define LimitEmsPages(dw)
  39. #define SetSwapAreaSize(w)              (w)
  40. #define LockSegment(w)                  GlobalFix((HANDLE)(w))
  41. #define UnlockSegment(w)                GlobalUnfix((HANDLE)(w))
  42. #define GetCurrentTime()                GetTickCount()
  43.  
  44. #define Yield()
  45.  
  46. #define INVALID_HANDLE_VALUE (HANDLE)-1
  47. #define INVALID_FILE_SIZE (DWORD)0xFFFFFFFF
  48.  
  49. #define FILE_BEGIN           0
  50. #define FILE_CURRENT         1
  51. #define FILE_END             2
  52.  
  53. #define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFF
  54.  
  55. #define WAIT_FAILED (DWORD)0xFFFFFFFF
  56. #define WAIT_OBJECT_0       ((STATUS_WAIT_0 ) + 0 )
  57.  
  58. #define WAIT_ABANDONED         ((STATUS_ABANDONED_WAIT_0 ) + 0 )
  59. #define WAIT_ABANDONED_0       ((STATUS_ABANDONED_WAIT_0 ) + 0 )
  60.  
  61. #define WAIT_TIMEOUT                        STATUS_TIMEOUT
  62. #define WAIT_IO_COMPLETION                  STATUS_USER_APC
  63. #define STILL_ACTIVE                        STATUS_PENDING
  64. #define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
  65. #define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
  66. #define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
  67. #define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
  68. #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
  69. #define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
  70. #define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
  71. #define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
  72. #define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
  73. #define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
  74. #define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
  75. #define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
  76. #define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
  77. #define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
  78. #define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
  79. #define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
  80. #define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
  81. #define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
  82. #define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
  83. #define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
  84. #define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
  85. #define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
  86. #define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT
  87. #define MoveMemory RtlMoveMemory
  88. #define CopyMemory RtlCopyMemory
  89. #define FillMemory RtlFillMemory
  90. #define ZeroMemory RtlZeroMemory
  91.  
  92. //
  93. // File creation flags must start at the high end since they
  94. // are combined with the attributes
  95. //
  96.  
  97. #define FILE_FLAG_WRITE_THROUGH         0x80000000
  98. #define FILE_FLAG_OVERLAPPED            0x40000000
  99. #define FILE_FLAG_NO_BUFFERING          0x20000000
  100. #define FILE_FLAG_RANDOM_ACCESS         0x10000000
  101. #define FILE_FLAG_SEQUENTIAL_SCAN       0x08000000
  102. #define FILE_FLAG_DELETE_ON_CLOSE       0x04000000
  103. #define FILE_FLAG_BACKUP_SEMANTICS      0x02000000
  104. #define FILE_FLAG_POSIX_SEMANTICS       0x01000000
  105.  
  106. #define CREATE_NEW          1
  107. #define CREATE_ALWAYS       2
  108. #define OPEN_EXISTING       3
  109. #define OPEN_ALWAYS         4
  110. #define TRUNCATE_EXISTING   5
  111.  
  112. #if(_WIN32_WINNT >= 0x0400)
  113. //
  114. // Define possible return codes from the CopyFileEx callback routine
  115. //
  116.  
  117. #define PROGRESS_CONTINUE   0
  118. #define PROGRESS_CANCEL     1
  119. #define PROGRESS_STOP       2
  120. #define PROGRESS_QUIET      3
  121.  
  122. //
  123. // Define CopyFileEx callback routine state change values
  124. //
  125.  
  126. #define CALLBACK_CHUNK_FINISHED         0x00000000
  127. #define CALLBACK_STREAM_SWITCH          0x00000001
  128.  
  129. //
  130. // Define CopyFileEx option flags
  131. //
  132.  
  133. #define COPY_FILE_FAIL_IF_EXISTS        0x00000001
  134. #define COPY_FILE_RESTARTABLE           0x00000002
  135. #endif /* _WIN32_WINNT >= 0x0400 */
  136.  
  137. //
  138. // Define the NamedPipe definitions
  139. //
  140.  
  141.  
  142. //
  143. // Define the dwOpenMode values for CreateNamedPipe
  144. //
  145.  
  146. #define PIPE_ACCESS_INBOUND         0x00000001
  147. #define PIPE_ACCESS_OUTBOUND        0x00000002
  148. #define PIPE_ACCESS_DUPLEX          0x00000003
  149.  
  150. //
  151. // Define the Named Pipe End flags for GetNamedPipeInfo
  152. //
  153.  
  154. #define PIPE_CLIENT_END             0x00000000
  155. #define PIPE_SERVER_END             0x00000001
  156.  
  157. //
  158. // Define the dwPipeMode values for CreateNamedPipe
  159. //
  160.  
  161. #define PIPE_WAIT                   0x00000000
  162. #define PIPE_NOWAIT                 0x00000001
  163. #define PIPE_READMODE_BYTE          0x00000000
  164. #define PIPE_READMODE_MESSAGE       0x00000002
  165. #define PIPE_TYPE_BYTE              0x00000000
  166. #define PIPE_TYPE_MESSAGE           0x00000004
  167.  
  168. //
  169. // Define the well known values for CreateNamedPipe nMaxInstances
  170. //
  171.  
  172. #define PIPE_UNLIMITED_INSTANCES    255
  173.  
  174. //
  175. // Define the Security Quality of Service bits to be passed
  176. // into CreateFile
  177. //
  178.  
  179. #define SECURITY_ANONYMOUS          ( SecurityAnonymous      << 16 )
  180. #define SECURITY_IDENTIFICATION     ( SecurityIdentification << 16 )
  181. #define SECURITY_IMPERSONATION      ( SecurityImpersonation  << 16 )
  182. #define SECURITY_DELEGATION         ( SecurityDelegation     << 16 )
  183.  
  184. #define SECURITY_CONTEXT_TRACKING  0x00040000
  185. #define SECURITY_EFFECTIVE_ONLY    0x00080000
  186.  
  187. #define SECURITY_SQOS_PRESENT      0x00100000
  188. #define SECURITY_VALID_SQOS_FLAGS  0x001F0000
  189.  
  190. //
  191. //  File structures
  192. //
  193.  
  194. typedef struct _OVERLAPPED {
  195.     DWORD   Internal;
  196.     DWORD   InternalHigh;
  197.     DWORD   Offset;
  198.     DWORD   OffsetHigh;
  199.     HANDLE  hEvent;
  200. } OVERLAPPED, *LPOVERLAPPED;
  201.  
  202. typedef struct _SECURITY_ATTRIBUTES {
  203.     DWORD nLength;
  204.     LPVOID lpSecurityDescriptor;
  205.     BOOL bInheritHandle;
  206. } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  207.  
  208. typedef struct _PROCESS_INFORMATION {
  209.     HANDLE hProcess;
  210.     HANDLE hThread;
  211.     DWORD dwProcessId;
  212.     DWORD dwThreadId;
  213. } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
  214.  
  215. //
  216. //  File System time stamps are represented with the following structure:
  217. //
  218.  
  219. typedef struct _FILETIME {
  220.     DWORD dwLowDateTime;
  221.     DWORD dwHighDateTime;
  222. } FILETIME, *PFILETIME, *LPFILETIME;
  223.  
  224. //
  225. // System time is represented with the following structure:
  226. //
  227.  
  228. typedef struct _SYSTEMTIME {
  229.     WORD wYear;
  230.     WORD wMonth;
  231.     WORD wDayOfWeek;
  232.     WORD wDay;
  233.     WORD wHour;
  234.     WORD wMinute;
  235.     WORD wSecond;
  236.     WORD wMilliseconds;
  237. } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
  238.  
  239. typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(
  240.     LPVOID lpThreadParameter
  241.     );
  242. typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
  243.  
  244. #if(_WIN32_WINNT >= 0x0400)
  245. typedef VOID (WINAPI *PFIBER_START_ROUTINE)(
  246.     LPVOID lpFiberParameter
  247.     );
  248. typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
  249. #endif /* _WIN32_WINNT >= 0x0400 */
  250.  
  251. typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
  252. typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
  253. typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
  254.  
  255. typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
  256. typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
  257. typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
  258.  
  259. #ifdef _X86_
  260. typedef PLDT_ENTRY LPLDT_ENTRY;
  261. #else
  262. typedef LPVOID LPLDT_ENTRY;
  263. #endif
  264.  
  265. #define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
  266. #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
  267.  
  268. //
  269. // Serial provider type.
  270. //
  271.  
  272. #define SP_SERIALCOMM    ((DWORD)0x00000001)
  273.  
  274. //
  275. // Provider SubTypes
  276. //
  277.  
  278. #define PST_UNSPECIFIED      ((DWORD)0x00000000)
  279. #define PST_RS232            ((DWORD)0x00000001)
  280. #define PST_PARALLELPORT     ((DWORD)0x00000002)
  281. #define PST_RS422            ((DWORD)0x00000003)
  282. #define PST_RS423            ((DWORD)0x00000004)
  283. #define PST_RS449            ((DWORD)0x00000005)
  284. #define PST_MODEM            ((DWORD)0x00000006)
  285. #define PST_FAX              ((DWORD)0x00000021)
  286. #define PST_SCANNER          ((DWORD)0x00000022)
  287. #define PST_NETWORK_BRIDGE   ((DWORD)0x00000100)
  288. #define PST_LAT              ((DWORD)0x00000101)
  289. #define PST_TCPIP_TELNET     ((DWORD)0x00000102)
  290. #define PST_X25              ((DWORD)0x00000103)
  291.  
  292.  
  293. //
  294. // Provider capabilities flags.
  295. //
  296.  
  297. #define PCF_DTRDSR        ((DWORD)0x0001)
  298. #define PCF_RTSCTS        ((DWORD)0x0002)
  299. #define PCF_RLSD          ((DWORD)0x0004)
  300. #define PCF_PARITY_CHECK  ((DWORD)0x0008)
  301. #define PCF_XONXOFF       ((DWORD)0x0010)
  302. #define PCF_SETXCHAR      ((DWORD)0x0020)
  303. #define PCF_TOTALTIMEOUTS ((DWORD)0x0040)
  304. #define PCF_INTTIMEOUTS   ((DWORD)0x0080)
  305. #define PCF_SPECIALCHARS  ((DWORD)0x0100)
  306. #define PCF_16BITMODE     ((DWORD)0x0200)
  307.  
  308. //
  309. // Comm provider settable parameters.
  310. //
  311.  
  312. #define SP_PARITY         ((DWORD)0x0001)
  313. #define SP_BAUD           ((DWORD)0x0002)
  314. #define SP_DATABITS       ((DWORD)0x0004)
  315. #define SP_STOPBITS       ((DWORD)0x0008)
  316. #define SP_HANDSHAKING    ((DWORD)0x0010)
  317. #define SP_PARITY_CHECK   ((DWORD)0x0020)
  318. #define SP_RLSD           ((DWORD)0x0040)
  319.  
  320. //
  321. // Settable baud rates in the provider.
  322. //
  323.  
  324. #define BAUD_075          ((DWORD)0x00000001)
  325. #define BAUD_110          ((DWORD)0x00000002)
  326. #define BAUD_134_5        ((DWORD)0x00000004)
  327. #define BAUD_150          ((DWORD)0x00000008)
  328. #define BAUD_300          ((DWORD)0x00000010)
  329. #define BAUD_600          ((DWORD)0x00000020)
  330. #define BAUD_1200         ((DWORD)0x00000040)
  331. #define BAUD_1800         ((DWORD)0x00000080)
  332. #define BAUD_2400         ((DWORD)0x00000100)
  333. #define BAUD_4800         ((DWORD)0x00000200)
  334. #define BAUD_7200         ((DWORD)0x00000400)
  335. #define BAUD_9600         ((DWORD)0x00000800)
  336. #define BAUD_14400        ((DWORD)0x00001000)
  337. #define BAUD_19200        ((DWORD)0x00002000)
  338. #define BAUD_38400        ((DWORD)0x00004000)
  339. #define BAUD_56K          ((DWORD)0x00008000)
  340. #define BAUD_128K         ((DWORD)0x00010000)
  341. #define BAUD_115200       ((DWORD)0x00020000)
  342. #define BAUD_57600        ((DWORD)0x00040000)
  343. #define BAUD_USER         ((DWORD)0x10000000)
  344.  
  345. //
  346. // Settable Data Bits
  347. //
  348.  
  349. #define DATABITS_5        ((WORD)0x0001)
  350. #define DATABITS_6        ((WORD)0x0002)
  351. #define DATABITS_7        ((WORD)0x0004)
  352. #define DATABITS_8        ((WORD)0x0008)
  353. #define DATABITS_16       ((WORD)0x0010)
  354. #define DATABITS_16X      ((WORD)0x0020)
  355.  
  356. //
  357. // Settable Stop and Parity bits.
  358. //
  359.  
  360. #define STOPBITS_10       ((WORD)0x0001)
  361. #define STOPBITS_15       ((WORD)0x0002)
  362. #define STOPBITS_20       ((WORD)0x0004)
  363. #define PARITY_NONE       ((WORD)0x0100)
  364. #define PARITY_ODD        ((WORD)0x0200)
  365. #define PARITY_EVEN       ((WORD)0x0400)
  366. #define PARITY_MARK       ((WORD)0x0800)
  367. #define PARITY_SPACE      ((WORD)0x1000)
  368.  
  369. typedef struct _COMMPROP {
  370.     WORD wPacketLength;
  371.     WORD wPacketVersion;
  372.     DWORD dwServiceMask;
  373.     DWORD dwReserved1;
  374.     DWORD dwMaxTxQueue;
  375.     DWORD dwMaxRxQueue;
  376.     DWORD dwMaxBaud;
  377.     DWORD dwProvSubType;
  378.     DWORD dwProvCapabilities;
  379.     DWORD dwSettableParams;
  380.     DWORD dwSettableBaud;
  381.     WORD wSettableData;
  382.     WORD wSettableStopParity;
  383.     DWORD dwCurrentTxQueue;
  384.     DWORD dwCurrentRxQueue;
  385.     DWORD dwProvSpec1;
  386.     DWORD dwProvSpec2;
  387.     WCHAR wcProvChar[1];
  388. } COMMPROP,*LPCOMMPROP;
  389.  
  390. //
  391. // Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
  392. // is valid before a call to GetCommProperties().
  393. //
  394. #define COMMPROP_INITIALIZED ((DWORD)0xE73CF52E)
  395.  
  396. typedef struct _COMSTAT {
  397.     DWORD fCtsHold : 1;
  398.     DWORD fDsrHold : 1;
  399.     DWORD fRlsdHold : 1;
  400.     DWORD fXoffHold : 1;
  401.     DWORD fXoffSent : 1;
  402.     DWORD fEof : 1;
  403.     DWORD fTxim : 1;
  404.     DWORD fReserved : 25;
  405.     DWORD cbInQue;
  406.     DWORD cbOutQue;
  407. } COMSTAT, *LPCOMSTAT;
  408.  
  409. //
  410. // DTR Control Flow Values.
  411. //
  412. #define DTR_CONTROL_DISABLE    0x00
  413. #define DTR_CONTROL_ENABLE     0x01
  414. #define DTR_CONTROL_HANDSHAKE  0x02
  415.  
  416. //
  417. // RTS Control Flow Values
  418. //
  419. #define RTS_CONTROL_DISABLE    0x00
  420. #define RTS_CONTROL_ENABLE     0x01
  421. #define RTS_CONTROL_HANDSHAKE  0x02
  422. #define RTS_CONTROL_TOGGLE     0x03
  423.  
  424. typedef struct _DCB {
  425.     DWORD DCBlength;      /* sizeof(DCB)                     */
  426.     DWORD BaudRate;       /* Baudrate at which running       */
  427.     DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */
  428.     DWORD fParity: 1;     /* Enable parity checking          */
  429.     DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */
  430.     DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */
  431.     DWORD fDtrControl:2;  /* DTR Flow control                */
  432.     DWORD fDsrSensitivity:1; /* DSR Sensitivity              */
  433.     DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
  434.     DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */
  435.     DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */
  436.     DWORD fErrorChar: 1;  /* Enable Err Replacement          */
  437.     DWORD fNull: 1;       /* Enable Null stripping           */
  438.     DWORD fRtsControl:2;  /* Rts Flow control                */
  439.     DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
  440.     DWORD fDummy2:17;     /* Reserved                        */
  441.     WORD wReserved;       /* Not currently used              */
  442.     WORD XonLim;          /* Transmit X-ON threshold         */
  443.     WORD XoffLim;         /* Transmit X-OFF threshold        */
  444.     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
  445.     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
  446.     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
  447.     char XonChar;         /* Tx and Rx X-ON character        */
  448.     char XoffChar;        /* Tx and Rx X-OFF character       */
  449.     char ErrorChar;       /* Error replacement char          */
  450.     char EofChar;         /* End of Input character          */
  451.     char EvtChar;         /* Received Event character        */
  452.     WORD wReserved1;      /* Fill for now.                   */
  453. } DCB, *LPDCB;
  454.  
  455. typedef struct _COMMTIMEOUTS {
  456.     DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
  457.     DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
  458.     DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
  459.     DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
  460.     DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
  461. } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
  462.  
  463. typedef struct _COMMCONFIG {
  464.     DWORD dwSize;               /* Size of the entire struct */
  465.     WORD wVersion;              /* version of the structure */
  466.     WORD wReserved;             /* alignment */
  467.     DCB dcb;                    /* device control block */
  468.     DWORD dwProviderSubType;    /* ordinal value for identifying
  469.                                    provider-defined data structure format*/
  470.     DWORD dwProviderOffset;     /* Specifies the offset of provider specific
  471.                                    data field in bytes from the start */
  472.     DWORD dwProviderSize;       /* size of the provider-specific data field */
  473.     WCHAR wcProviderData[1];    /* provider-specific data */
  474. } COMMCONFIG,*LPCOMMCONFIG;
  475.  
  476. typedef struct _SYSTEM_INFO {
  477.     union {
  478.         DWORD dwOemId;          // Obsolete field...do not use
  479.         struct {
  480.             WORD wProcessorArchitecture;
  481.             WORD wReserved;
  482. #if defined(__cplusplus) || defined(_ANONYMOUS_STRUCT)
  483.         };
  484. #else
  485.         }s;
  486. #endif
  487. #if defined(__cplusplus) || defined(_ANONYMOUS_UNION)
  488.     };
  489. #else
  490.     }u;
  491. #endif
  492.  
  493.     DWORD dwPageSize;
  494.     LPVOID lpMinimumApplicationAddress;
  495.     LPVOID lpMaximumApplicationAddress;
  496.     DWORD dwActiveProcessorMask;
  497.     DWORD dwNumberOfProcessors;
  498.     DWORD dwProcessorType;
  499.     DWORD dwAllocationGranularity;
  500.     WORD wProcessorLevel;
  501.     WORD wProcessorRevision;
  502. } SYSTEM_INFO, *LPSYSTEM_INFO;
  503.  
  504. //
  505. //
  506.  
  507.  
  508. #define FreeModule(hLibModule) FreeLibrary((hLibModule))
  509. #define MakeProcInstance(lpProc,hInstance) (lpProc)
  510. #if defined(__BORLANDC__)
  511. #define FreeProcInstance(lpProc)
  512. #else
  513. #define FreeProcInstance(lpProc) (lpProc)
  514. #endif
  515.  
  516. /* Global Memory Flags */
  517. #define GMEM_FIXED          0x0000
  518. #define GMEM_MOVEABLE       0x0002
  519. #define GMEM_NOCOMPACT      0x0010
  520. #define GMEM_NODISCARD      0x0020
  521. #define GMEM_ZEROINIT       0x0040
  522. #define GMEM_MODIFY         0x0080
  523. #define GMEM_DISCARDABLE    0x0100
  524. #define GMEM_NOT_BANKED     0x1000
  525. #define GMEM_SHARE          0x2000
  526. #define GMEM_DDESHARE       0x2000
  527. #define GMEM_NOTIFY         0x4000
  528. #define GMEM_LOWER          GMEM_NOT_BANKED
  529. #define GMEM_VALID_FLAGS    0x7F72
  530. #define GMEM_INVALID_HANDLE 0x8000
  531.  
  532. #define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
  533. #define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)
  534.  
  535. #define GlobalLRUNewest( h )    (HANDLE)(h)
  536. #define GlobalLRUOldest( h )    (HANDLE)(h)
  537. #define GlobalDiscard( h )      GlobalReAlloc( (h), 0, GMEM_MOVEABLE )
  538.  
  539. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  540. #define GMEM_DISCARDED      0x4000
  541. #define GMEM_LOCKCOUNT      0x00FF
  542.  
  543. typedef struct _MEMORYSTATUS {
  544.     DWORD dwLength;
  545.     DWORD dwMemoryLoad;
  546.     DWORD dwTotalPhys;
  547.     DWORD dwAvailPhys;
  548.     DWORD dwTotalPageFile;
  549.     DWORD dwAvailPageFile;
  550.     DWORD dwTotalVirtual;
  551.     DWORD dwAvailVirtual;
  552. } MEMORYSTATUS, *LPMEMORYSTATUS;
  553.  
  554. /* Local Memory Flags */
  555. #define LMEM_FIXED          0x0000
  556. #define LMEM_MOVEABLE       0x0002
  557. #define LMEM_NOCOMPACT      0x0010
  558. #define LMEM_NODISCARD      0x0020
  559. #define LMEM_ZEROINIT       0x0040
  560. #define LMEM_MODIFY         0x0080
  561. #define LMEM_DISCARDABLE    0x0F00
  562. #define LMEM_VALID_FLAGS    0x0F72
  563. #define LMEM_INVALID_HANDLE 0x8000
  564.  
  565. #define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
  566. #define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
  567.  
  568. #define NONZEROLHND         (LMEM_MOVEABLE)
  569. #define NONZEROLPTR         (LMEM_FIXED)
  570.  
  571. #define LocalDiscard( h )   LocalReAlloc( (h), 0, LMEM_MOVEABLE )
  572.  
  573. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  574. #define LMEM_DISCARDED      0x4000
  575. #define LMEM_LOCKCOUNT      0x00FF
  576.  
  577. //
  578. // dwCreationFlag values
  579. //
  580.  
  581. #define DEBUG_PROCESS               0x00000001
  582. #define DEBUG_ONLY_THIS_PROCESS     0x00000002
  583.  
  584. #define CREATE_SUSPENDED            0x00000004
  585.  
  586. #define DETACHED_PROCESS            0x00000008
  587.  
  588. #define CREATE_NEW_CONSOLE          0x00000010
  589.  
  590. #define NORMAL_PRIORITY_CLASS       0x00000020
  591. #define IDLE_PRIORITY_CLASS         0x00000040
  592. #define HIGH_PRIORITY_CLASS         0x00000080
  593. #define REALTIME_PRIORITY_CLASS     0x00000100
  594.  
  595. #define CREATE_NEW_PROCESS_GROUP    0x00000200
  596. #define CREATE_UNICODE_ENVIRONMENT  0x00000400
  597.  
  598. #define CREATE_SEPARATE_WOW_VDM     0x00000800
  599. #define CREATE_SHARED_WOW_VDM       0x00001000
  600. #define CREATE_FORCEDOS             0x00002000
  601.  
  602. #define CREATE_DEFAULT_ERROR_MODE   0x04000000
  603. #define CREATE_NO_WINDOW            0x08000000
  604.  
  605. #define PROFILE_USER                0x10000000
  606. #define PROFILE_KERNEL              0x20000000
  607. #define PROFILE_SERVER              0x40000000
  608.  
  609. #define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
  610. #define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
  611. #define THREAD_PRIORITY_NORMAL          0
  612. #define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
  613. #define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
  614. #define THREAD_PRIORITY_ERROR_RETURN    (MAXLONG)
  615.  
  616. #define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
  617. #define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE
  618.  
  619. //
  620. // Debug APIs
  621. //
  622. #define EXCEPTION_DEBUG_EVENT       1
  623. #define CREATE_THREAD_DEBUG_EVENT   2
  624. #define CREATE_PROCESS_DEBUG_EVENT  3
  625. #define EXIT_THREAD_DEBUG_EVENT     4
  626. #define EXIT_PROCESS_DEBUG_EVENT    5
  627. #define LOAD_DLL_DEBUG_EVENT        6
  628. #define UNLOAD_DLL_DEBUG_EVENT      7
  629. #define OUTPUT_DEBUG_STRING_EVENT   8
  630. #define RIP_EVENT                   9
  631.  
  632. typedef struct _EXCEPTION_DEBUG_INFO {
  633.     EXCEPTION_RECORD ExceptionRecord;
  634.     DWORD dwFirstChance;
  635. } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
  636.  
  637. typedef struct _CREATE_THREAD_DEBUG_INFO {
  638.     HANDLE hThread;
  639.     LPVOID lpThreadLocalBase;
  640.     LPTHREAD_START_ROUTINE lpStartAddress;
  641. } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
  642.  
  643. typedef struct _CREATE_PROCESS_DEBUG_INFO {
  644.     HANDLE hFile;
  645.     HANDLE hProcess;
  646.     HANDLE hThread;
  647.     LPVOID lpBaseOfImage;
  648.     DWORD dwDebugInfoFileOffset;
  649.     DWORD nDebugInfoSize;
  650.     LPVOID lpThreadLocalBase;
  651.     LPTHREAD_START_ROUTINE lpStartAddress;
  652.     LPVOID lpImageName;
  653.     WORD fUnicode;
  654. } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
  655.  
  656. typedef struct _EXIT_THREAD_DEBUG_INFO {
  657.     DWORD dwExitCode;
  658. } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
  659.  
  660. typedef struct _EXIT_PROCESS_DEBUG_INFO {
  661.     DWORD dwExitCode;
  662. } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
  663.  
  664. typedef struct _LOAD_DLL_DEBUG_INFO {
  665.     HANDLE hFile;
  666.     LPVOID lpBaseOfDll;
  667.     DWORD dwDebugInfoFileOffset;
  668.     DWORD nDebugInfoSize;
  669.     LPVOID lpImageName;
  670.     WORD fUnicode;
  671. } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
  672.  
  673. typedef struct _UNLOAD_DLL_DEBUG_INFO {
  674.     LPVOID lpBaseOfDll;
  675. } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
  676.  
  677. typedef struct _OUTPUT_DEBUG_STRING_INFO {
  678.     LPSTR lpDebugStringData;
  679.     WORD fUnicode;
  680.     WORD nDebugStringLength;
  681. } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
  682.  
  683. typedef struct _RIP_INFO {
  684.     DWORD dwError;
  685.     DWORD dwType;
  686. } RIP_INFO, *LPRIP_INFO;
  687.  
  688.  
  689. typedef struct _DEBUG_EVENT {
  690.     DWORD dwDebugEventCode;
  691.     DWORD dwProcessId;
  692.     DWORD dwThreadId;
  693.     union {
  694.         EXCEPTION_DEBUG_INFO Exception;
  695.         CREATE_THREAD_DEBUG_INFO CreateThread;
  696.         CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
  697.         EXIT_THREAD_DEBUG_INFO ExitThread;
  698.         EXIT_PROCESS_DEBUG_INFO ExitProcess;
  699.         LOAD_DLL_DEBUG_INFO LoadDll;
  700.         UNLOAD_DLL_DEBUG_INFO UnloadDll;
  701.         OUTPUT_DEBUG_STRING_INFO DebugString;
  702.         RIP_INFO RipInfo;
  703.     } u;
  704. } DEBUG_EVENT, *LPDEBUG_EVENT;
  705.  
  706. #if !defined(MIDL_PASS)
  707. typedef PCONTEXT LPCONTEXT;
  708. typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
  709. typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
  710. #endif
  711.  
  712. #define DRIVE_UNKNOWN     0
  713. #define DRIVE_NO_ROOT_DIR 1
  714. #define DRIVE_REMOVABLE   2
  715. #define DRIVE_FIXED       3
  716. #define DRIVE_REMOTE      4
  717. #define DRIVE_CDROM       5
  718. #define DRIVE_RAMDISK     6
  719.  
  720.  
  721. #define GetFreeSpace(w)                 (0x100000L)
  722.  
  723.  
  724. #define FILE_TYPE_UNKNOWN   0x0000
  725. #define FILE_TYPE_DISK      0x0001
  726. #define FILE_TYPE_CHAR      0x0002
  727. #define FILE_TYPE_PIPE      0x0003
  728. #define FILE_TYPE_REMOTE    0x8000
  729.  
  730.  
  731. #define STD_INPUT_HANDLE    (DWORD)-10
  732. #define STD_OUTPUT_HANDLE   (DWORD)-11
  733. #define STD_ERROR_HANDLE      (DWORD)-12
  734.  
  735. #define NOPARITY            0
  736. #define ODDPARITY           1
  737. #define EVENPARITY          2
  738. #define MARKPARITY          3
  739. #define SPACEPARITY         4
  740.  
  741. #define ONESTOPBIT          0
  742. #define ONE5STOPBITS        1
  743. #define TWOSTOPBITS         2
  744.  
  745. #define IGNORE              0       // Ignore signal
  746. #define INFINITE            0xFFFFFFFF  // Infinite timeout
  747.  
  748. //
  749. // Baud rates at which the communication device operates
  750. //
  751.  
  752. #define CBR_110             110
  753. #define CBR_300             300
  754. #define CBR_600             600
  755. #define CBR_1200            1200
  756. #define CBR_2400            2400
  757. #define CBR_4800            4800
  758. #define CBR_9600            9600
  759. #define CBR_14400           14400
  760. #define CBR_19200           19200
  761. #define CBR_38400           38400
  762. #define CBR_56000           56000
  763. #define CBR_57600           57600
  764. #define CBR_115200          115200
  765. #define CBR_128000          128000
  766. #define CBR_256000          256000
  767.  
  768. //
  769. // Error Flags
  770. //
  771.  
  772. #define CE_RXOVER           0x0001  // Receive Queue overflow
  773. #define CE_OVERRUN          0x0002  // Receive Overrun Error
  774. #define CE_RXPARITY         0x0004  // Receive Parity Error
  775. #define CE_FRAME            0x0008  // Receive Framing error
  776. #define CE_BREAK            0x0010  // Break Detected
  777. #define CE_TXFULL           0x0100  // TX Queue is full
  778. #define CE_PTO              0x0200  // LPTx Timeout
  779. #define CE_IOE              0x0400  // LPTx I/O Error
  780. #define CE_DNS              0x0800  // LPTx Device not selected
  781. #define CE_OOP              0x1000  // LPTx Out-Of-Paper
  782. #define CE_MODE             0x8000  // Requested mode unsupported
  783.  
  784. #define IE_BADID            (-1)    // Invalid or unsupported id
  785. #define IE_OPEN             (-2)    // Device Already Open
  786. #define IE_NOPEN            (-3)    // Device Not Open
  787. #define IE_MEMORY           (-4)    // Unable to allocate queues
  788. #define IE_DEFAULT          (-5)    // Error in default parameters
  789. #define IE_HARDWARE         (-10)   // Hardware Not Present
  790. #define IE_BYTESIZE         (-11)   // Illegal Byte Size
  791. #define IE_BAUDRATE         (-12)   // Unsupported BaudRate
  792.  
  793. //
  794. // Events
  795. //
  796.  
  797. #define EV_RXCHAR           0x0001  // Any Character received
  798. #define EV_RXFLAG           0x0002  // Received certain character
  799. #define EV_TXEMPTY          0x0004  // Transmitt Queue Empty
  800. #define EV_CTS              0x0008  // CTS changed state
  801. #define EV_DSR              0x0010  // DSR changed state
  802. #define EV_RLSD             0x0020  // RLSD changed state
  803. #define EV_BREAK            0x0040  // BREAK received
  804. #define EV_ERR              0x0080  // Line status error occurred
  805. #define EV_RING             0x0100  // Ring signal detected
  806. #define EV_PERR             0x0200  // Printer error occured
  807. #define EV_RX80FULL         0x0400  // Receive buffer is 80 percent full
  808. #define EV_EVENT1           0x0800  // Provider specific event 1
  809. #define EV_EVENT2           0x1000  // Provider specific event 2
  810.  
  811. //
  812. // Escape Functions
  813. //
  814.  
  815. #define SETXOFF             1       // Simulate XOFF received
  816. #define SETXON              2       // Simulate XON received
  817. #define SETRTS              3       // Set RTS high
  818. #define CLRRTS              4       // Set RTS low
  819. #define SETDTR              5       // Set DTR high
  820. #define CLRDTR              6       // Set DTR low
  821. #define RESETDEV            7       // Reset device if possible
  822. #define SETBREAK            8       // Set the device break line.
  823. #define CLRBREAK            9       // Clear the device break line.
  824.  
  825. //
  826. // PURGE function flags.
  827. //
  828. #define PURGE_TXABORT       0x0001  // Kill the pending/current writes to the comm port.
  829. #define PURGE_RXABORT       0x0002  // Kill the pending/current reads to the comm port.
  830. #define PURGE_TXCLEAR       0x0004  // Kill the transmit queue if there.
  831. #define PURGE_RXCLEAR       0x0008  // Kill the typeahead buffer if there.
  832.  
  833. #define LPTx                0x80    // Set if ID is for LPT device
  834.  
  835. //
  836. // Modem Status Flags
  837. //
  838. #define MS_CTS_ON           ((DWORD)0x0010)
  839. #define MS_DSR_ON           ((DWORD)0x0020)
  840. #define MS_RING_ON          ((DWORD)0x0040)
  841. #define MS_RLSD_ON          ((DWORD)0x0080)
  842.  
  843. //
  844. // WaitSoundState() Constants
  845. //
  846.  
  847. #define S_QUEUEEMPTY        0
  848. #define S_THRESHOLD         1
  849. #define S_ALLTHRESHOLD      2
  850.  
  851. //
  852. // Accent Modes
  853. //
  854.  
  855. #define S_NORMAL      0
  856. #define S_LEGATO      1
  857. #define S_STACCATO    2
  858.  
  859. //
  860. // SetSoundNoise() Sources
  861. //
  862.  
  863. #define S_PERIOD512   0     // Freq = N/512 high pitch, less coarse hiss
  864. #define S_PERIOD1024  1     // Freq = N/1024
  865. #define S_PERIOD2048  2     // Freq = N/2048 low pitch, more coarse hiss
  866. #define S_PERIODVOICE 3     // Source is frequency from voice channel (3)
  867. #define S_WHITE512    4     // Freq = N/512 high pitch, less coarse hiss
  868. #define S_WHITE1024   5     // Freq = N/1024
  869. #define S_WHITE2048   6     // Freq = N/2048 low pitch, more coarse hiss
  870. #define S_WHITEVOICE  7     // Source is frequency from voice channel (3)
  871.  
  872. #define S_SERDVNA     (-1)  // Device not available
  873. #define S_SEROFM      (-2)  // Out of memory
  874. #define S_SERMACT     (-3)  // Music active
  875. #define S_SERQFUL     (-4)  // Queue full
  876. #define S_SERBDNT     (-5)  // Invalid note
  877. #define S_SERDLN      (-6)  // Invalid note length
  878. #define S_SERDCC      (-7)  // Invalid note count
  879. #define S_SERDTP      (-8)  // Invalid tempo
  880. #define S_SERDVL      (-9)  // Invalid volume
  881. #define S_SERDMD      (-10) // Invalid mode
  882. #define S_SERDSH      (-11) // Invalid shape
  883. #define S_SERDPT      (-12) // Invalid pitch
  884. #define S_SERDFQ      (-13) // Invalid frequency
  885. #define S_SERDDR      (-14) // Invalid duration
  886. #define S_SERDSR      (-15) // Invalid source
  887. #define S_SERDST      (-16) // Invalid state
  888.  
  889. #define NMPWAIT_WAIT_FOREVER            0xffffffff
  890. #define NMPWAIT_NOWAIT                  0x00000001
  891. #define NMPWAIT_USE_DEFAULT_WAIT        0x00000000
  892.  
  893. #define FS_CASE_IS_PRESERVED            FILE_CASE_PRESERVED_NAMES
  894. #define FS_CASE_SENSITIVE               FILE_CASE_SENSITIVE_SEARCH
  895. #define FS_UNICODE_STORED_ON_DISK       FILE_UNICODE_ON_DISK
  896. #define FS_PERSISTENT_ACLS              FILE_PERSISTENT_ACLS
  897. #define FS_VOL_IS_COMPRESSED            FILE_VOLUME_IS_COMPRESSED
  898. #define FS_FILE_COMPRESSION             FILE_FILE_COMPRESSION
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905. #define FILE_MAP_COPY       SECTION_QUERY
  906. #define FILE_MAP_WRITE      SECTION_MAP_WRITE
  907. #define FILE_MAP_READ       SECTION_MAP_READ
  908. #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
  909.  
  910. #define OF_READ             0x00000000
  911. #define OF_WRITE            0x00000001
  912. #define OF_READWRITE        0x00000002
  913. #define OF_SHARE_COMPAT     0x00000000
  914. #define OF_SHARE_EXCLUSIVE  0x00000010
  915. #define OF_SHARE_DENY_WRITE 0x00000020
  916. #define OF_SHARE_DENY_READ  0x00000030
  917. #define OF_SHARE_DENY_NONE  0x00000040
  918. #define OF_PARSE            0x00000100
  919. #define OF_DELETE           0x00000200
  920. #define OF_VERIFY           0x00000400
  921. #define OF_CANCEL           0x00000800
  922. #define OF_CREATE           0x00001000
  923. #define OF_PROMPT           0x00002000
  924. #define OF_EXIST            0x00004000
  925. #define OF_REOPEN           0x00008000
  926.  
  927. #define OFS_MAXPATHNAME 128
  928. typedef struct _OFSTRUCT {
  929.     BYTE cBytes;
  930.     BYTE fFixedDisk;
  931.     WORD nErrCode;
  932.     WORD Reserved1;
  933.     WORD Reserved2;
  934.     CHAR szPathName[OFS_MAXPATHNAME];
  935. } OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT;
  936.  
  937. //
  938. // The MS-MIPS and Alpha compilers support intrinsic functions for interlocked
  939. // increment, decrement, and exchange.
  940. //
  941.  
  942. #if (defined(_M_MRX000) || defined(_M_ALPHA) || (defined(_M_PPC) && (_MSC_VER >= 1000))) && !defined(RC_INVOKED)
  943.  
  944. #define InterlockedIncrement _InterlockedIncrement
  945. #define InterlockedDecrement _InterlockedDecrement
  946. #define InterlockedExchange _InterlockedExchange
  947. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  948. #define InterlockedCompareExchange _InterlockedCompareExchange
  949.  
  950. LONG
  951. WINAPI
  952. InterlockedIncrement(
  953.     LPLONG lpAddend
  954.     );
  955.  
  956. LONG
  957. WINAPI
  958. InterlockedDecrement(
  959.     LPLONG lpAddend
  960.     );
  961.  
  962. LONG
  963. WINAPI
  964. InterlockedExchange(
  965.     LPLONG Target,
  966.     LONG Value
  967.     );
  968.  
  969. PVOID
  970. WINAPI
  971. InterlockedCompareExchange (
  972.     PVOID *Destination,
  973.     PVOID Exchange,
  974.     PVOID Comperand
  975.     );
  976.  
  977. LONG
  978. WINAPI
  979. InterlockedExchangeAdd(
  980.     LPLONG Addend,
  981.     LONG Value
  982.     );
  983.  
  984. #pragma intrinsic(_InterlockedIncrement)
  985. #pragma intrinsic(_InterlockedDecrement)
  986. #pragma intrinsic(_InterlockedExchange)
  987. #pragma intrinsic(_InterlockedCompareExchange)
  988. #pragma intrinsic(_InterlockedExchangeAdd)
  989.  
  990. #else
  991.  
  992. #ifndef _NTOS_
  993.  
  994. WINBASEAPI
  995. LONG
  996. WINAPI
  997. InterlockedIncrement(
  998.     LPLONG lpAddend
  999.     );
  1000.  
  1001. WINBASEAPI
  1002. LONG
  1003. WINAPI
  1004. InterlockedDecrement(
  1005.     LPLONG lpAddend
  1006.     );
  1007.  
  1008. WINBASEAPI
  1009. LONG
  1010. WINAPI
  1011. InterlockedExchange(
  1012.     LPLONG Target,
  1013.     LONG Value
  1014.     );
  1015.  
  1016. WINBASEAPI
  1017. LONG
  1018. WINAPI
  1019. InterlockedExchangeAdd(
  1020.     LPLONG Addend,
  1021.     LONG Value
  1022.     );
  1023.  
  1024. WINBASEAPI
  1025. PVOID
  1026. WINAPI
  1027. InterlockedCompareExchange (
  1028.     PVOID *Destination,
  1029.     PVOID Exchange,
  1030.     PVOID Comperand
  1031.     );
  1032.  
  1033. #endif /* NT_INCLUDED */
  1034.  
  1035. #endif
  1036.  
  1037. WINBASEAPI
  1038. BOOL
  1039. WINAPI
  1040. FreeResource(
  1041.         HGLOBAL hResData
  1042.         );
  1043.  
  1044. WINBASEAPI
  1045. LPVOID
  1046. WINAPI
  1047. LockResource(
  1048.         HGLOBAL hResData
  1049.         );
  1050.  
  1051. #define UnlockResource(hResData) ((hResData), 0)
  1052. #define MAXINTATOM 0xC000
  1053. #define MAKEINTATOM(i)  (LPTSTR)((DWORD)((WORD)(i)))
  1054. #define INVALID_ATOM ((ATOM)0)
  1055.  
  1056. #if defined(__BORLANDC__)
  1057.         #if defined(STRICT)
  1058.                 BOOL WINAPI   DllEntryPoint(HINSTANCE, DWORD, LPVOID);
  1059.         #else
  1060.                 BOOL WINAPI   DllEntryPoint(HANDLE, DWORD, LPVOID);
  1061.         #endif
  1062.  
  1063. int
  1064. WINAPI
  1065. wWinMain(
  1066.     HINSTANCE hInstance,
  1067.     HINSTANCE hPrevInstance,
  1068.     LPWSTR lpCmdLine,
  1069.     int nShowCmd
  1070.     );
  1071. #endif  /* __BORLANDC__ */
  1072.  
  1073. int
  1074. WINAPI
  1075. WinMain(
  1076.     HINSTANCE hInstance,
  1077.     HINSTANCE hPrevInstance,
  1078.     LPSTR lpCmdLine,
  1079.     int nShowCmd
  1080.     );
  1081.  
  1082. WINBASEAPI
  1083. BOOL
  1084. WINAPI
  1085. FreeLibrary(
  1086.     HMODULE hLibModule
  1087.     );
  1088.  
  1089.  
  1090. WINBASEAPI
  1091. VOID
  1092. WINAPI
  1093. FreeLibraryAndExitThread(
  1094.     HMODULE hLibModule,
  1095.     DWORD dwExitCode
  1096.     );
  1097.  
  1098. WINBASEAPI
  1099. BOOL
  1100. WINAPI
  1101. DisableThreadLibraryCalls(
  1102.     HMODULE hLibModule
  1103.     );
  1104.  
  1105. WINBASEAPI
  1106. FARPROC
  1107. WINAPI
  1108. GetProcAddress(
  1109.     HMODULE hModule,
  1110.     LPCSTR lpProcName
  1111.     );
  1112.  
  1113. WINBASEAPI
  1114. DWORD
  1115. WINAPI
  1116. GetVersion( VOID );
  1117.  
  1118. WINBASEAPI
  1119. HGLOBAL
  1120. WINAPI
  1121. GlobalAlloc(
  1122.     UINT uFlags,
  1123.     DWORD dwBytes
  1124.     );
  1125.  
  1126. WINBASEAPI
  1127. HGLOBAL
  1128. WINAPI
  1129. GlobalReAlloc(
  1130.     HGLOBAL hMem,
  1131.     DWORD dwBytes,
  1132.     UINT uFlags
  1133.     );
  1134.  
  1135. WINBASEAPI
  1136. DWORD
  1137. WINAPI
  1138. GlobalSize(
  1139.     HGLOBAL hMem
  1140.     );
  1141.  
  1142. WINBASEAPI
  1143. UINT
  1144. WINAPI
  1145. GlobalFlags(
  1146.     HGLOBAL hMem
  1147.     );
  1148.  
  1149.  
  1150. WINBASEAPI
  1151. LPVOID
  1152. WINAPI
  1153. GlobalLock(
  1154.     HGLOBAL hMem
  1155.     );
  1156.  
  1157. //!!!MWH My version  win31 = DWORD WINAPI GlobalHandle(UINT)
  1158. WINBASEAPI
  1159. HGLOBAL
  1160. WINAPI
  1161. GlobalHandle(
  1162.     LPCVOID pMem
  1163.     );
  1164.  
  1165.  
  1166. WINBASEAPI
  1167. BOOL
  1168. WINAPI
  1169. GlobalUnlock(
  1170.     HGLOBAL hMem
  1171.     );
  1172.  
  1173.  
  1174. WINBASEAPI
  1175. HGLOBAL
  1176. WINAPI
  1177. GlobalFree(
  1178.     HGLOBAL hMem
  1179.     );
  1180.  
  1181. WINBASEAPI
  1182. UINT
  1183. WINAPI
  1184. GlobalCompact(
  1185.     DWORD dwMinFree
  1186.     );
  1187.  
  1188. WINBASEAPI
  1189. VOID
  1190. WINAPI
  1191. GlobalFix(
  1192.     HGLOBAL hMem
  1193.     );
  1194.  
  1195. WINBASEAPI
  1196. VOID
  1197. WINAPI
  1198. GlobalUnfix(
  1199.     HGLOBAL hMem
  1200.     );
  1201.  
  1202. WINBASEAPI
  1203. LPVOID
  1204. WINAPI
  1205. GlobalWire(
  1206.     HGLOBAL hMem
  1207.     );
  1208.  
  1209. WINBASEAPI
  1210. BOOL
  1211. WINAPI
  1212. GlobalUnWire(
  1213.     HGLOBAL hMem
  1214.     );
  1215.  
  1216. WINBASEAPI
  1217. VOID
  1218. WINAPI
  1219. GlobalMemoryStatus(
  1220.     LPMEMORYSTATUS lpBuffer
  1221.     );
  1222.  
  1223. WINBASEAPI
  1224. HLOCAL
  1225. WINAPI
  1226. LocalAlloc(
  1227.     UINT uFlags,
  1228.     UINT uBytes
  1229.     );
  1230.  
  1231. WINBASEAPI
  1232. HLOCAL
  1233. WINAPI
  1234. LocalReAlloc(
  1235.     HLOCAL hMem,
  1236.     UINT uBytes,
  1237.     UINT uFlags
  1238.     );
  1239.  
  1240. WINBASEAPI
  1241. LPVOID
  1242. WINAPI
  1243. LocalLock(
  1244.     HLOCAL hMem
  1245.     );
  1246.  
  1247. WINBASEAPI
  1248. HLOCAL
  1249. WINAPI
  1250. LocalHandle(
  1251.     LPCVOID pMem
  1252.     );
  1253.  
  1254. WINBASEAPI
  1255. BOOL
  1256. WINAPI
  1257. LocalUnlock(
  1258.     HLOCAL hMem
  1259.     );
  1260.  
  1261. WINBASEAPI
  1262. UINT
  1263. WINAPI
  1264. LocalSize(
  1265.     HLOCAL hMem
  1266.     );
  1267.  
  1268. WINBASEAPI
  1269. UINT
  1270. WINAPI
  1271. LocalFlags(
  1272.     HLOCAL hMem
  1273.     );
  1274.  
  1275. WINBASEAPI
  1276. HLOCAL
  1277. WINAPI
  1278. LocalFree(
  1279.     HLOCAL hMem
  1280.     );
  1281.  
  1282. WINBASEAPI
  1283. UINT
  1284. WINAPI
  1285. LocalShrink(
  1286.     HLOCAL hMem,
  1287.     UINT cbNewSize
  1288.     );
  1289.  
  1290. WINBASEAPI
  1291. UINT
  1292. WINAPI
  1293. LocalCompact(
  1294.     UINT uMinFree
  1295.     );
  1296.  
  1297. WINBASEAPI
  1298. BOOL
  1299. WINAPI
  1300. FlushInstructionCache(
  1301.     HANDLE hProcess,
  1302.     LPCVOID lpBaseAddress,
  1303.     DWORD dwSize
  1304.     );
  1305.  
  1306. WINBASEAPI
  1307. LPVOID
  1308. WINAPI
  1309. VirtualAlloc(
  1310.     LPVOID lpAddress,
  1311.     DWORD dwSize,
  1312.     DWORD flAllocationType,
  1313.     DWORD flProtect
  1314.     );
  1315.  
  1316. WINBASEAPI
  1317. BOOL
  1318. WINAPI
  1319. VirtualFree(
  1320.     LPVOID lpAddress,
  1321.     DWORD dwSize,
  1322.     DWORD dwFreeType
  1323.     );
  1324.  
  1325. WINBASEAPI
  1326. BOOL
  1327. WINAPI
  1328. VirtualProtect(
  1329.     LPVOID lpAddress,
  1330.     DWORD dwSize,
  1331.     DWORD flNewProtect,
  1332.     PDWORD lpflOldProtect
  1333.     );
  1334.  
  1335. WINBASEAPI
  1336. DWORD
  1337. WINAPI
  1338. VirtualQuery(
  1339.     LPCVOID lpAddress,
  1340.     PMEMORY_BASIC_INFORMATION lpBuffer,
  1341.     DWORD dwLength
  1342.     );
  1343.  
  1344. WINBASEAPI
  1345. LPVOID
  1346. WINAPI
  1347. VirtualAllocEx(
  1348.     HANDLE hProcess,
  1349.     LPVOID lpAddress,
  1350.     DWORD dwSize,
  1351.     DWORD flAllocationType,
  1352.     DWORD flProtect
  1353.     );
  1354.  
  1355. WINBASEAPI
  1356. BOOL
  1357. WINAPI
  1358. VirtualFreeEx(
  1359.     HANDLE hProcess,
  1360.     LPVOID lpAddress,
  1361.     DWORD dwSize,
  1362.     DWORD dwFreeType
  1363.     );
  1364.  
  1365. WINBASEAPI
  1366. BOOL
  1367. WINAPI
  1368. VirtualProtectEx(
  1369.     HANDLE hProcess,
  1370.     LPVOID lpAddress,
  1371.     DWORD dwSize,
  1372.     DWORD flNewProtect,
  1373.     PDWORD lpflOldProtect
  1374.     );
  1375.  
  1376. WINBASEAPI
  1377. DWORD
  1378. WINAPI
  1379. VirtualQueryEx(
  1380.     HANDLE hProcess,
  1381.     LPCVOID lpAddress,
  1382.     PMEMORY_BASIC_INFORMATION lpBuffer,
  1383.     DWORD dwLength
  1384.     );
  1385.  
  1386. WINBASEAPI
  1387. HANDLE
  1388. WINAPI
  1389. HeapCreate(
  1390.     DWORD flOptions,
  1391.     DWORD dwInitialSize,
  1392.     DWORD dwMaximumSize
  1393.     );
  1394.  
  1395. WINBASEAPI
  1396. BOOL
  1397. WINAPI
  1398. HeapDestroy(
  1399.     HANDLE hHeap
  1400.     );
  1401.  
  1402.  
  1403. WINBASEAPI
  1404. LPVOID
  1405. WINAPI
  1406. HeapAlloc(
  1407.     HANDLE hHeap,
  1408.     DWORD dwFlags,
  1409.     DWORD dwBytes
  1410.     );
  1411.  
  1412. WINBASEAPI
  1413. LPVOID
  1414. WINAPI
  1415. HeapReAlloc(
  1416.     HANDLE hHeap,
  1417.     DWORD dwFlags,
  1418.     LPVOID lpMem,
  1419.     DWORD dwBytes
  1420.     );
  1421.  
  1422. WINBASEAPI
  1423. BOOL
  1424. WINAPI
  1425. HeapFree(
  1426.     HANDLE hHeap,
  1427.     DWORD dwFlags,
  1428.     LPVOID lpMem
  1429.     );
  1430.  
  1431. WINBASEAPI
  1432. DWORD
  1433. WINAPI
  1434. HeapSize(
  1435.     HANDLE hHeap,
  1436.     DWORD dwFlags,
  1437.     LPCVOID lpMem
  1438.     );
  1439.  
  1440. WINBASEAPI
  1441. BOOL
  1442. WINAPI
  1443. HeapValidate(
  1444.     HANDLE hHeap,
  1445.     DWORD dwFlags,
  1446.     LPCVOID lpMem
  1447.     );
  1448.  
  1449. WINBASEAPI
  1450. UINT
  1451. WINAPI
  1452. HeapCompact(
  1453.     HANDLE hHeap,
  1454.     DWORD dwFlags
  1455.     );
  1456.  
  1457. WINBASEAPI
  1458. HANDLE
  1459. WINAPI
  1460. GetProcessHeap( VOID );
  1461.  
  1462. WINBASEAPI
  1463. DWORD
  1464. WINAPI
  1465. GetProcessHeaps(
  1466.     DWORD NumberOfHeaps,
  1467.     PHANDLE ProcessHeaps
  1468.     );
  1469.  
  1470. typedef struct _PROCESS_HEAP_ENTRY {
  1471.     PVOID lpData;
  1472.     DWORD cbData;
  1473.     BYTE cbOverhead;
  1474.     BYTE iRegionIndex;
  1475.     WORD wFlags;
  1476.     union {
  1477.         struct {
  1478.             HANDLE hMem;
  1479.             DWORD dwReserved[ 3 ];
  1480.         } Block;
  1481.         struct {
  1482.             DWORD dwCommittedSize;
  1483.             DWORD dwUnCommittedSize;
  1484.             LPVOID lpFirstBlock;
  1485.             LPVOID lpLastBlock;
  1486.         } Region;
  1487. #if defined(__cplusplus) || defined(_ANONYMOUS_UNION)
  1488.     };
  1489. #else
  1490.     }u;
  1491. #endif
  1492. } PROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY;
  1493.  
  1494. #define PROCESS_HEAP_REGION             0x0001
  1495. #define PROCESS_HEAP_UNCOMMITTED_RANGE  0x0002
  1496. #define PROCESS_HEAP_ENTRY_BUSY         0x0004
  1497. #define PROCESS_HEAP_ENTRY_MOVEABLE     0x0010
  1498. #define PROCESS_HEAP_ENTRY_DDESHARE     0x0020
  1499.  
  1500. WINBASEAPI
  1501. BOOL
  1502. WINAPI
  1503. HeapLock(
  1504.     HANDLE hHeap
  1505.     );
  1506.  
  1507. WINBASEAPI
  1508. BOOL
  1509. WINAPI
  1510. HeapUnlock(
  1511.     HANDLE hHeap
  1512.     );
  1513.  
  1514.  
  1515. WINBASEAPI
  1516. BOOL
  1517. WINAPI
  1518. HeapWalk(
  1519.     HANDLE hHeap,
  1520.     LPPROCESS_HEAP_ENTRY lpEntry
  1521.     );
  1522.  
  1523. // GetBinaryType return values.
  1524.  
  1525. #define SCS_32BIT_BINARY    0
  1526. #define SCS_DOS_BINARY      1
  1527. #define SCS_WOW_BINARY      2
  1528. #define SCS_PIF_BINARY      3
  1529. #define SCS_POSIX_BINARY    4
  1530. #define SCS_OS216_BINARY    5
  1531.  
  1532. WINBASEAPI
  1533. BOOL
  1534. WINAPI
  1535. GetBinaryTypeA(
  1536.     LPCSTR lpApplicationName,
  1537.     LPDWORD lpBinaryType
  1538.     );
  1539. WINBASEAPI
  1540. BOOL
  1541. WINAPI
  1542. GetBinaryTypeW(
  1543.     LPCWSTR lpApplicationName,
  1544.     LPDWORD lpBinaryType
  1545.     );
  1546. #ifdef UNICODE
  1547. #define GetBinaryType  GetBinaryTypeW
  1548. #else
  1549. #define GetBinaryType  GetBinaryTypeA
  1550. #endif // !UNICODE
  1551.  
  1552. WINBASEAPI
  1553. DWORD
  1554. WINAPI
  1555. GetShortPathNameA(
  1556.     LPCSTR lpszLongPath,
  1557.     LPSTR  lpszShortPath,
  1558.     DWORD    cchBuffer
  1559.     );
  1560. WINBASEAPI
  1561. DWORD
  1562. WINAPI
  1563. GetShortPathNameW(
  1564.     LPCWSTR lpszLongPath,
  1565.     LPWSTR  lpszShortPath,
  1566.     DWORD    cchBuffer
  1567.     );
  1568. #ifdef UNICODE
  1569. #define GetShortPathName  GetShortPathNameW
  1570. #else
  1571. #define GetShortPathName  GetShortPathNameA
  1572. #endif // !UNICODE
  1573.  
  1574. WINBASEAPI
  1575. BOOL
  1576. WINAPI
  1577. GetProcessAffinityMask(
  1578.     HANDLE hProcess,
  1579.     LPDWORD lpProcessAffinityMask,
  1580.     LPDWORD lpSystemAffinityMask
  1581.     );
  1582.  
  1583. WINBASEAPI
  1584. BOOL
  1585. WINAPI
  1586. SetProcessAffinityMask(
  1587.     HANDLE hProcess,
  1588.     DWORD dwProcessAffinityMask
  1589.     );
  1590.  
  1591.  
  1592. WINBASEAPI
  1593. BOOL
  1594. WINAPI
  1595. GetProcessTimes(
  1596.     HANDLE hProcess,
  1597.     LPFILETIME lpCreationTime,
  1598.     LPFILETIME lpExitTime,
  1599.     LPFILETIME lpKernelTime,
  1600.     LPFILETIME lpUserTime
  1601.     );
  1602.  
  1603. WINBASEAPI
  1604. BOOL
  1605. WINAPI
  1606. GetProcessWorkingSetSize(
  1607.     HANDLE hProcess,
  1608.     LPDWORD lpMinimumWorkingSetSize,
  1609.     LPDWORD lpMaximumWorkingSetSize
  1610.     );
  1611.  
  1612. WINBASEAPI
  1613. BOOL
  1614. WINAPI
  1615. SetProcessWorkingSetSize(
  1616.     HANDLE hProcess,
  1617.     DWORD dwMinimumWorkingSetSize,
  1618.     DWORD dwMaximumWorkingSetSize
  1619.     );
  1620.  
  1621. WINBASEAPI
  1622. HANDLE
  1623. WINAPI
  1624. OpenProcess(
  1625.     DWORD dwDesiredAccess,
  1626.     BOOL bInheritHandle,
  1627.     DWORD dwProcessId
  1628.     );
  1629.  
  1630. WINBASEAPI
  1631. HANDLE
  1632. WINAPI
  1633. GetCurrentProcess(
  1634.     VOID
  1635.     );
  1636.  
  1637. WINBASEAPI
  1638. DWORD
  1639. WINAPI
  1640. GetCurrentProcessId(
  1641.     VOID
  1642.     );
  1643.  
  1644. WINBASEAPI
  1645. VOID
  1646. WINAPI
  1647. ExitProcess(
  1648.     UINT uExitCode
  1649.     );
  1650.  
  1651. WINBASEAPI
  1652. BOOL
  1653. WINAPI
  1654. TerminateProcess(
  1655.     HANDLE hProcess,
  1656.     UINT uExitCode
  1657.     );
  1658.  
  1659. WINBASEAPI
  1660. BOOL
  1661. WINAPI
  1662. GetExitCodeProcess(
  1663.     HANDLE hProcess,
  1664.     LPDWORD lpExitCode
  1665.     );
  1666.  
  1667.  
  1668. WINBASEAPI
  1669. VOID
  1670. WINAPI
  1671. FatalExit(
  1672.     int ExitCode
  1673.     );
  1674.  
  1675. WINBASEAPI
  1676. LPSTR
  1677. WINAPI
  1678. GetEnvironmentStrings(
  1679.     VOID
  1680.     );
  1681.  
  1682. WINBASEAPI
  1683. LPWSTR
  1684. WINAPI
  1685. GetEnvironmentStringsW(
  1686.     VOID
  1687.     );
  1688.  
  1689. #ifdef UNICODE
  1690. #define GetEnvironmentStrings  GetEnvironmentStringsW
  1691. #else
  1692. #define GetEnvironmentStringsA  GetEnvironmentStrings
  1693. #endif // !UNICODE
  1694.  
  1695. WINBASEAPI
  1696. BOOL
  1697. WINAPI
  1698. FreeEnvironmentStringsA(
  1699.     LPSTR
  1700.     );
  1701. WINBASEAPI
  1702. BOOL
  1703. WINAPI
  1704. FreeEnvironmentStringsW(
  1705.     LPWSTR
  1706.     );
  1707. #ifdef UNICODE
  1708. #define FreeEnvironmentStrings  FreeEnvironmentStringsW
  1709. #else
  1710. #define FreeEnvironmentStrings  FreeEnvironmentStringsA
  1711. #endif // !UNICODE
  1712.  
  1713. WINBASEAPI
  1714. VOID
  1715. WINAPI
  1716. RaiseException(
  1717.     DWORD dwExceptionCode,
  1718.     DWORD dwExceptionFlags,
  1719.     DWORD nNumberOfArguments,
  1720.     CONST DWORD *lpArguments
  1721.     );
  1722.  
  1723. WINBASEAPI
  1724. LONG
  1725. WINAPI
  1726. UnhandledExceptionFilter(
  1727.     struct _EXCEPTION_POINTERS *ExceptionInfo
  1728.     );
  1729.  
  1730. typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)(
  1731.     struct _EXCEPTION_POINTERS *ExceptionInfo
  1732.     );
  1733. typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
  1734.  
  1735. WINBASEAPI
  1736. LPTOP_LEVEL_EXCEPTION_FILTER
  1737. WINAPI
  1738. SetUnhandledExceptionFilter(
  1739.     LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
  1740.     );
  1741.  
  1742. #if(_WIN32_WINNT >= 0x0400)
  1743. WINBASEAPI
  1744. LPVOID
  1745. WINAPI
  1746. CreateFiber(
  1747.     DWORD dwStackSize,
  1748.     LPFIBER_START_ROUTINE lpStartAddress,
  1749.     LPVOID lpParameter
  1750.     );
  1751.  
  1752. WINBASEAPI
  1753. VOID
  1754. WINAPI
  1755. DeleteFiber(
  1756.     LPVOID lpFiber
  1757.     );
  1758.  
  1759. WINBASEAPI
  1760. LPVOID
  1761. WINAPI
  1762. ConvertThreadToFiber(
  1763.     LPVOID lpParameter
  1764.     );
  1765.  
  1766. WINBASEAPI
  1767. VOID
  1768. WINAPI
  1769. SwitchToFiber(
  1770.     LPVOID lpFiber
  1771.     );
  1772.  
  1773. WINBASEAPI
  1774. BOOL
  1775. WINAPI
  1776. SwitchToThread(
  1777.     VOID
  1778.     );
  1779. #endif /* _WIN32_WINNT >= 0x0400 */
  1780.  
  1781. WINBASEAPI
  1782. HANDLE
  1783. WINAPI
  1784. CreateThread(
  1785.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  1786.     DWORD dwStackSize,
  1787.     LPTHREAD_START_ROUTINE lpStartAddress,
  1788.     LPVOID lpParameter,
  1789.     DWORD dwCreationFlags,
  1790.     LPDWORD lpThreadId
  1791.     );
  1792.  
  1793. WINBASEAPI
  1794. HANDLE
  1795. WINAPI
  1796. CreateRemoteThread(
  1797.     HANDLE hProcess,
  1798.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  1799.     DWORD dwStackSize,
  1800.     LPTHREAD_START_ROUTINE lpStartAddress,
  1801.     LPVOID lpParameter,
  1802.     DWORD dwCreationFlags,
  1803.     LPDWORD lpThreadId
  1804.     );
  1805.  
  1806. WINBASEAPI
  1807. HANDLE
  1808. WINAPI
  1809. GetCurrentThread(
  1810.     VOID
  1811.     );
  1812.  
  1813. WINBASEAPI
  1814. DWORD
  1815. WINAPI
  1816. GetCurrentThreadId(
  1817.     VOID
  1818.     );
  1819.  
  1820. WINBASEAPI
  1821. DWORD
  1822. WINAPI
  1823. SetThreadAffinityMask(
  1824.     HANDLE hThread,
  1825.     DWORD dwThreadAffinityMask
  1826.     );
  1827.  
  1828. #if(_WIN32_WINNT >= 0x0400)
  1829. WINBASEAPI
  1830. DWORD
  1831. WINAPI
  1832. SetThreadIdealProcessor(
  1833.     HANDLE hThread,
  1834.     DWORD dwIdealProcessor
  1835.     );
  1836. #endif /* _WIN32_WINNT >= 0x0400 */
  1837.  
  1838. WINBASEAPI
  1839. BOOL
  1840. WINAPI
  1841. SetProcessPriorityBoost(
  1842.     HANDLE hProcess,
  1843.     BOOL bDisablePriorityBoost
  1844.     );
  1845.  
  1846. WINBASEAPI
  1847. BOOL
  1848. WINAPI
  1849. GetProcessPriorityBoost(
  1850.     HANDLE hProcess,
  1851.     PBOOL pDisablePriorityBoost
  1852.     );
  1853.  
  1854.  
  1855. WINBASEAPI
  1856. BOOL
  1857. WINAPI
  1858. SetThreadPriority(
  1859.     HANDLE hThread,
  1860.     int nPriority
  1861.     );
  1862.  
  1863. WINBASEAPI
  1864. BOOL
  1865. WINAPI
  1866. SetThreadPriorityBoost(
  1867.     HANDLE hThread,
  1868.     BOOL bDisablePriorityBoost
  1869.     );
  1870.  
  1871. WINBASEAPI
  1872. BOOL
  1873. WINAPI
  1874. GetThreadPriorityBoost(
  1875.     HANDLE hThread,
  1876.     PBOOL pDisablePriorityBoost
  1877.     );
  1878.  
  1879. WINBASEAPI
  1880. int
  1881. WINAPI
  1882. GetThreadPriority(
  1883.     HANDLE hThread
  1884.     );
  1885.  
  1886. WINBASEAPI
  1887. BOOL
  1888. WINAPI
  1889. GetThreadTimes(
  1890.     HANDLE hThread,
  1891.     LPFILETIME lpCreationTime,
  1892.     LPFILETIME lpExitTime,
  1893.     LPFILETIME lpKernelTime,
  1894.     LPFILETIME lpUserTime
  1895.     );
  1896.  
  1897. WINBASEAPI
  1898. VOID
  1899. WINAPI
  1900. ExitThread(
  1901.     DWORD dwExitCode
  1902.     );
  1903.  
  1904. WINBASEAPI
  1905. BOOL
  1906. WINAPI
  1907. TerminateThread(
  1908.     HANDLE hThread,
  1909.     DWORD dwExitCode
  1910.     );
  1911.  
  1912. WINBASEAPI
  1913. BOOL
  1914. WINAPI
  1915. GetExitCodeThread(
  1916.     HANDLE hThread,
  1917.     LPDWORD lpExitCode
  1918.     );
  1919.  
  1920. WINBASEAPI
  1921. BOOL
  1922. WINAPI
  1923. GetThreadSelectorEntry(
  1924.     HANDLE hThread,
  1925.     DWORD dwSelector,
  1926.     LPLDT_ENTRY lpSelectorEntry
  1927.     );
  1928.  
  1929. WINBASEAPI
  1930. DWORD
  1931. WINAPI
  1932. GetLastError(
  1933.     VOID
  1934.     );
  1935.  
  1936. WINBASEAPI
  1937. VOID
  1938. WINAPI
  1939. SetLastError(
  1940.     DWORD dwErrCode
  1941.     );
  1942.  
  1943. #define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
  1944.  
  1945. WINBASEAPI
  1946. BOOL
  1947. WINAPI
  1948. GetOverlappedResult(
  1949.     HANDLE hFile,
  1950.     LPOVERLAPPED lpOverlapped,
  1951.     LPDWORD lpNumberOfBytesTransferred,
  1952.     BOOL bWait
  1953.     );
  1954.  
  1955. WINBASEAPI
  1956. HANDLE
  1957. WINAPI
  1958. CreateIoCompletionPort(
  1959.     HANDLE FileHandle,
  1960.     HANDLE ExistingCompletionPort,
  1961.     DWORD CompletionKey,
  1962.     DWORD NumberOfConcurrentThreads
  1963.     );
  1964.  
  1965. WINBASEAPI
  1966. BOOL
  1967. WINAPI
  1968. GetQueuedCompletionStatus(
  1969.     HANDLE CompletionPort,
  1970.     LPDWORD lpNumberOfBytesTransferred,
  1971.     LPDWORD lpCompletionKey,
  1972.     LPOVERLAPPED *lpOverlapped,
  1973.     DWORD dwMilliseconds
  1974.     );
  1975.  
  1976. WINBASEAPI
  1977. BOOL
  1978. WINAPI
  1979. PostQueuedCompletionStatus(
  1980.     HANDLE CompletionPort,
  1981.     DWORD dwNumberOfBytesTransferred,
  1982.     DWORD dwCompletionKey,
  1983.     LPOVERLAPPED lpOverlapped
  1984.     );
  1985.  
  1986. #define SEM_FAILCRITICALERRORS      0x0001
  1987. #define SEM_NOGPFAULTERRORBOX       0x0002
  1988. #define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
  1989. #define SEM_NOOPENFILEERRORBOX      0x8000
  1990.  
  1991. WINBASEAPI
  1992. UINT
  1993. WINAPI
  1994. SetErrorMode(
  1995.     UINT uMode
  1996.     );
  1997.  
  1998. WINBASEAPI
  1999. BOOL
  2000. WINAPI
  2001. ReadProcessMemory(
  2002.     HANDLE hProcess,
  2003.     LPCVOID lpBaseAddress,
  2004.     LPVOID lpBuffer,
  2005.     DWORD nSize,
  2006.     LPDWORD lpNumberOfBytesRead
  2007.     );
  2008.  
  2009. WINBASEAPI
  2010. BOOL
  2011. WINAPI
  2012. WriteProcessMemory(
  2013.     HANDLE hProcess,
  2014.     LPVOID lpBaseAddress,
  2015.     LPVOID lpBuffer,
  2016.     DWORD nSize,
  2017.     LPDWORD lpNumberOfBytesWritten
  2018.     );
  2019.  
  2020. #if !defined(MIDL_PASS)
  2021. WINBASEAPI
  2022. BOOL
  2023. WINAPI
  2024. GetThreadContext(
  2025.     HANDLE hThread,
  2026.     LPCONTEXT lpContext
  2027.     );
  2028.  
  2029. WINBASEAPI
  2030. BOOL
  2031. WINAPI
  2032. SetThreadContext(
  2033.     HANDLE hThread,
  2034.     CONST CONTEXT *lpContext
  2035.     );
  2036. #endif
  2037.  
  2038. WINBASEAPI
  2039. DWORD
  2040. WINAPI
  2041. SuspendThread(
  2042.     HANDLE hThread
  2043.     );
  2044.  
  2045. WINBASEAPI
  2046. DWORD
  2047. WINAPI
  2048. ResumeThread(
  2049.     HANDLE hThread
  2050.     );
  2051.  
  2052.  
  2053. #if(_WIN32_WINNT >= 0x0400)
  2054. typedef
  2055. VOID
  2056. (APIENTRY *PAPCFUNC)(
  2057.     DWORD dwParam
  2058.     );
  2059.  
  2060. WINBASEAPI
  2061. DWORD
  2062. WINAPI
  2063. QueueUserAPC(
  2064.     PAPCFUNC pfnAPC,
  2065.     HANDLE hThread,
  2066.     DWORD dwData
  2067.     );
  2068. #endif /* _WIN32_WINNT >= 0x0400 */
  2069.  
  2070. WINBASEAPI
  2071. VOID
  2072. WINAPI
  2073. DebugBreak(
  2074.     VOID
  2075.     );
  2076.  
  2077. WINBASEAPI
  2078. BOOL
  2079. WINAPI
  2080. WaitForDebugEvent(
  2081.     LPDEBUG_EVENT lpDebugEvent,
  2082.     DWORD dwMilliseconds
  2083.     );
  2084.  
  2085. WINBASEAPI
  2086. BOOL
  2087. WINAPI
  2088. ContinueDebugEvent(
  2089.     DWORD dwProcessId,
  2090.     DWORD dwThreadId,
  2091.     DWORD dwContinueStatus
  2092.     );
  2093.  
  2094. WINBASEAPI
  2095. BOOL
  2096. WINAPI
  2097. DebugActiveProcess(
  2098.     DWORD dwProcessId
  2099.     );
  2100.  
  2101. WINBASEAPI
  2102. VOID
  2103. WINAPI
  2104. InitializeCriticalSection(
  2105.     LPCRITICAL_SECTION lpCriticalSection
  2106.     );
  2107.  
  2108. WINBASEAPI
  2109. VOID
  2110. WINAPI
  2111. EnterCriticalSection(
  2112.     LPCRITICAL_SECTION lpCriticalSection
  2113.     );
  2114.  
  2115. WINBASEAPI
  2116. VOID
  2117. WINAPI
  2118. LeaveCriticalSection(
  2119.     LPCRITICAL_SECTION lpCriticalSection
  2120.     );
  2121.  
  2122. #if(_WIN32_WINNT >= 0x0400)
  2123. WINBASEAPI
  2124. BOOL
  2125. WINAPI
  2126. TryEnterCriticalSection(
  2127.     LPCRITICAL_SECTION lpCriticalSection
  2128.     );
  2129. #endif /* _WIN32_WINNT >= 0x0400 */
  2130.  
  2131. WINBASEAPI
  2132. VOID
  2133. WINAPI
  2134. DeleteCriticalSection(
  2135.     LPCRITICAL_SECTION lpCriticalSection
  2136.     );
  2137.  
  2138. WINBASEAPI
  2139. BOOL
  2140. WINAPI
  2141. SetEvent(
  2142.     HANDLE hEvent
  2143.     );
  2144.  
  2145. WINBASEAPI
  2146. BOOL
  2147. WINAPI
  2148. ResetEvent(
  2149.     HANDLE hEvent
  2150.     );
  2151.  
  2152. WINBASEAPI
  2153. BOOL
  2154. WINAPI
  2155. PulseEvent(
  2156.     HANDLE hEvent
  2157.     );
  2158.  
  2159. WINBASEAPI
  2160. BOOL
  2161. WINAPI
  2162. ReleaseSemaphore(
  2163.     HANDLE hSemaphore,
  2164.     LONG lReleaseCount,
  2165.     LPLONG lpPreviousCount
  2166.     );
  2167.  
  2168. WINBASEAPI
  2169. BOOL
  2170. WINAPI
  2171. ReleaseMutex(
  2172.     HANDLE hMutex
  2173.     );
  2174.  
  2175. WINBASEAPI
  2176. DWORD
  2177. WINAPI
  2178. WaitForSingleObject(
  2179.     HANDLE hHandle,
  2180.     DWORD dwMilliseconds
  2181.     );
  2182.  
  2183. WINBASEAPI
  2184. DWORD
  2185. WINAPI
  2186. WaitForMultipleObjects(
  2187.     DWORD nCount,
  2188.     CONST HANDLE *lpHandles,
  2189.     BOOL bWaitAll,
  2190.     DWORD dwMilliseconds
  2191.     );
  2192.  
  2193. WINBASEAPI
  2194. VOID
  2195. WINAPI
  2196. Sleep(
  2197.     DWORD dwMilliseconds
  2198.     );
  2199.  
  2200. WINBASEAPI
  2201. HGLOBAL
  2202. WINAPI
  2203. LoadResource(
  2204.     HMODULE hModule,
  2205.     HRSRC hResInfo
  2206.     );
  2207.  
  2208. WINBASEAPI
  2209. DWORD
  2210. WINAPI
  2211. SizeofResource(
  2212.     HMODULE hModule,
  2213.     HRSRC hResInfo
  2214.     );
  2215.  
  2216.  
  2217. WINBASEAPI
  2218. ATOM
  2219. WINAPI
  2220. GlobalDeleteAtom(
  2221.     ATOM nAtom
  2222.     );
  2223.  
  2224. WINBASEAPI
  2225. BOOL
  2226. WINAPI
  2227. InitAtomTable(
  2228.     DWORD nSize
  2229.     );
  2230.  
  2231. WINBASEAPI
  2232. ATOM
  2233. WINAPI
  2234. DeleteAtom(
  2235.     ATOM nAtom
  2236.     );
  2237.  
  2238. WINBASEAPI
  2239. UINT
  2240. WINAPI
  2241. SetHandleCount(
  2242.     UINT uNumber
  2243.     );
  2244.  
  2245. WINBASEAPI
  2246. DWORD
  2247. WINAPI
  2248. GetLogicalDrives(
  2249.     VOID
  2250.     );
  2251.  
  2252. WINBASEAPI
  2253. BOOL
  2254. WINAPI
  2255. LockFile(
  2256.     HANDLE hFile,
  2257.     DWORD dwFileOffsetLow,
  2258.     DWORD dwFileOffsetHigh,
  2259.     DWORD nNumberOfBytesToLockLow,
  2260.     DWORD nNumberOfBytesToLockHigh
  2261.     );
  2262.  
  2263. WINBASEAPI
  2264. BOOL
  2265. WINAPI
  2266. UnlockFile(
  2267.     HANDLE hFile,
  2268.     DWORD dwFileOffsetLow,
  2269.     DWORD dwFileOffsetHigh,
  2270.     DWORD nNumberOfBytesToUnlockLow,
  2271.     DWORD nNumberOfBytesToUnlockHigh
  2272.     );
  2273.  
  2274. WINBASEAPI
  2275. BOOL
  2276. WINAPI
  2277. LockFileEx(
  2278.     HANDLE hFile,
  2279.     DWORD dwFlags,
  2280.     DWORD dwReserved,
  2281.     DWORD nNumberOfBytesToLockLow,
  2282.     DWORD nNumberOfBytesToLockHigh,
  2283.     LPOVERLAPPED lpOverlapped
  2284.     );
  2285.  
  2286. #define LOCKFILE_FAIL_IMMEDIATELY   0x00000001
  2287. #define LOCKFILE_EXCLUSIVE_LOCK     0x00000002
  2288.  
  2289. WINBASEAPI
  2290. BOOL
  2291. WINAPI
  2292. UnlockFileEx(
  2293.     HANDLE hFile,
  2294.     DWORD dwReserved,
  2295.     DWORD nNumberOfBytesToUnlockLow,
  2296.     DWORD nNumberOfBytesToUnlockHigh,
  2297.     LPOVERLAPPED lpOverlapped
  2298.     );
  2299.  
  2300. typedef struct _BY_HANDLE_FILE_INFORMATION {
  2301.     DWORD dwFileAttributes;
  2302.     FILETIME ftCreationTime;
  2303.     FILETIME ftLastAccessTime;
  2304.     FILETIME ftLastWriteTime;
  2305.     DWORD dwVolumeSerialNumber;
  2306.     DWORD nFileSizeHigh;
  2307.     DWORD nFileSizeLow;
  2308.     DWORD nNumberOfLinks;
  2309.     DWORD nFileIndexHigh;
  2310.     DWORD nFileIndexLow;
  2311. } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
  2312.  
  2313. WINBASEAPI
  2314. BOOL
  2315. WINAPI
  2316. GetFileInformationByHandle(
  2317.     HANDLE hFile,
  2318.     LPBY_HANDLE_FILE_INFORMATION lpFileInformation
  2319.     );
  2320.  
  2321. WINBASEAPI
  2322. DWORD
  2323. WINAPI
  2324. GetFileType(
  2325.     HANDLE hFile
  2326.     );
  2327.  
  2328. WINBASEAPI
  2329. DWORD
  2330. WINAPI
  2331. GetFileSize(
  2332.     HANDLE hFile,
  2333.     LPDWORD lpFileSizeHigh
  2334.     );
  2335.  
  2336. WINBASEAPI
  2337. HANDLE
  2338. WINAPI
  2339. GetStdHandle(
  2340.     DWORD nStdHandle
  2341.     );
  2342.  
  2343. WINBASEAPI
  2344. BOOL
  2345. WINAPI
  2346. SetStdHandle(
  2347.     DWORD nStdHandle,
  2348.     HANDLE hHandle
  2349.     );
  2350.  
  2351. WINBASEAPI
  2352. BOOL
  2353. WINAPI
  2354. WriteFile(
  2355.     HANDLE hFile,
  2356.     LPCVOID lpBuffer,
  2357.     DWORD nNumberOfBytesToWrite,
  2358.     LPDWORD lpNumberOfBytesWritten,
  2359.     LPOVERLAPPED lpOverlapped
  2360.     );
  2361.  
  2362. WINBASEAPI
  2363. BOOL
  2364. WINAPI
  2365. ReadFile(
  2366.     HANDLE hFile,
  2367.     LPVOID lpBuffer,
  2368.     DWORD nNumberOfBytesToRead,
  2369.     LPDWORD lpNumberOfBytesRead,
  2370.     LPOVERLAPPED lpOverlapped
  2371.     );
  2372.  
  2373. WINBASEAPI
  2374. BOOL
  2375. WINAPI
  2376. FlushFileBuffers(
  2377.     HANDLE hFile
  2378.     );
  2379.  
  2380. WINBASEAPI
  2381. BOOL
  2382. WINAPI
  2383. DeviceIoControl(
  2384.     HANDLE hDevice,
  2385.     DWORD dwIoControlCode,
  2386.     LPVOID lpInBuffer,
  2387.     DWORD nInBufferSize,
  2388.     LPVOID lpOutBuffer,
  2389.     DWORD nOutBufferSize,
  2390.     LPDWORD lpBytesReturned,
  2391.     LPOVERLAPPED lpOverlapped
  2392.     );
  2393.  
  2394. WINBASEAPI
  2395. BOOL
  2396. WINAPI
  2397. SetEndOfFile(
  2398.     HANDLE hFile
  2399.     );
  2400.  
  2401. WINBASEAPI
  2402. DWORD
  2403. WINAPI
  2404. SetFilePointer(
  2405.     HANDLE hFile,
  2406.     LONG lDistanceToMove,
  2407.     PLONG lpDistanceToMoveHigh,
  2408.     DWORD dwMoveMethod
  2409.     );
  2410.  
  2411. WINBASEAPI
  2412. BOOL
  2413. WINAPI
  2414. FindClose(
  2415.     HANDLE hFindFile
  2416.     );
  2417.  
  2418. WINBASEAPI
  2419. BOOL
  2420. WINAPI
  2421. GetFileTime(
  2422.     HANDLE hFile,
  2423.     LPFILETIME lpCreationTime,
  2424.     LPFILETIME lpLastAccessTime,
  2425.     LPFILETIME lpLastWriteTime
  2426.     );
  2427.  
  2428. WINBASEAPI
  2429. BOOL
  2430. WINAPI
  2431. SetFileTime(
  2432.     HANDLE hFile,
  2433.     CONST FILETIME *lpCreationTime,
  2434.     CONST FILETIME *lpLastAccessTime,
  2435.     CONST FILETIME *lpLastWriteTime
  2436.     );
  2437.  
  2438. WINBASEAPI
  2439. BOOL
  2440. WINAPI
  2441. CloseHandle(
  2442.     HANDLE hObject
  2443.     );
  2444.  
  2445. WINBASEAPI
  2446. BOOL
  2447. WINAPI
  2448. DuplicateHandle(
  2449.     HANDLE hSourceProcessHandle,
  2450.     HANDLE hSourceHandle,
  2451.     HANDLE hTargetProcessHandle,
  2452.     LPHANDLE lpTargetHandle,
  2453.     DWORD dwDesiredAccess,
  2454.     BOOL bInheritHandle,
  2455.     DWORD dwOptions
  2456.     );
  2457.  
  2458. WINBASEAPI
  2459. BOOL
  2460. WINAPI
  2461. GetHandleInformation(
  2462.     HANDLE hObject,
  2463.     LPDWORD lpdwFlags
  2464.     );
  2465.  
  2466. WINBASEAPI
  2467. BOOL
  2468. WINAPI
  2469. SetHandleInformation(
  2470.     HANDLE hObject,
  2471.     DWORD dwMask,
  2472.     DWORD dwFlags
  2473.     );
  2474.  
  2475. #define HANDLE_FLAG_INHERIT             0x00000001
  2476. #define HANDLE_FLAG_PROTECT_FROM_CLOSE  0x00000002
  2477.  
  2478. #define HINSTANCE_ERROR 32
  2479.  
  2480. WINBASEAPI
  2481. DWORD
  2482. WINAPI
  2483. LoadModule(
  2484.     LPCSTR lpModuleName,
  2485.     LPVOID lpParameterBlock
  2486.     );
  2487.  
  2488. WINBASEAPI
  2489. UINT
  2490. WINAPI
  2491. WinExec(
  2492.     LPCSTR lpCmdLine,
  2493.     UINT uCmdShow
  2494.     );
  2495.  
  2496. WINBASEAPI
  2497. BOOL
  2498. WINAPI
  2499. ClearCommBreak(
  2500.     HANDLE hFile
  2501.     );
  2502.  
  2503. WINBASEAPI
  2504. BOOL
  2505. WINAPI
  2506. ClearCommError(
  2507.     HANDLE hFile,
  2508.     LPDWORD lpErrors,
  2509.     LPCOMSTAT lpStat
  2510.     );
  2511.  
  2512. WINBASEAPI
  2513. BOOL
  2514. WINAPI
  2515. SetupComm(
  2516.     HANDLE hFile,
  2517.     DWORD dwInQueue,
  2518.     DWORD dwOutQueue
  2519.     );
  2520.  
  2521. WINBASEAPI
  2522. BOOL
  2523. WINAPI
  2524. EscapeCommFunction(
  2525.     HANDLE hFile,
  2526.     DWORD dwFunc
  2527.     );
  2528.  
  2529. WINBASEAPI
  2530. BOOL
  2531. WINAPI
  2532. GetCommConfig(
  2533.     HANDLE hCommDev,
  2534.     LPCOMMCONFIG lpCC,
  2535.     LPDWORD lpdwSize
  2536.     );
  2537.  
  2538. WINBASEAPI
  2539. BOOL
  2540. WINAPI
  2541. GetCommMask(
  2542.     HANDLE hFile,
  2543.     LPDWORD lpEvtMask
  2544.     );
  2545.  
  2546. WINBASEAPI
  2547. BOOL
  2548. WINAPI
  2549. GetCommProperties(
  2550.     HANDLE hFile,
  2551.     LPCOMMPROP lpCommProp
  2552.     );
  2553.  
  2554. WINBASEAPI
  2555. BOOL
  2556. WINAPI
  2557. GetCommModemStatus(
  2558.     HANDLE hFile,
  2559.     LPDWORD lpModemStat
  2560.     );
  2561.  
  2562. WINBASEAPI
  2563. BOOL
  2564. WINAPI
  2565. GetCommState(
  2566.     HANDLE hFile,
  2567.     LPDCB lpDCB
  2568.     );
  2569.  
  2570. WINBASEAPI
  2571. BOOL
  2572. WINAPI
  2573. GetCommTimeouts(
  2574.     HANDLE hFile,
  2575.     LPCOMMTIMEOUTS lpCommTimeouts
  2576.     );
  2577.  
  2578. WINBASEAPI
  2579. BOOL
  2580. WINAPI
  2581. PurgeComm(
  2582.     HANDLE hFile,
  2583.     DWORD dwFlags
  2584.     );
  2585.  
  2586. WINBASEAPI
  2587. BOOL
  2588. WINAPI
  2589. SetCommBreak(
  2590.     HANDLE hFile
  2591.     );
  2592.  
  2593. WINBASEAPI
  2594. BOOL
  2595. WINAPI
  2596. SetCommConfig(
  2597.     HANDLE hCommDev,
  2598.     LPCOMMCONFIG lpCC,
  2599.     DWORD dwSize
  2600.     );
  2601.  
  2602. WINBASEAPI
  2603. BOOL
  2604. WINAPI
  2605. SetCommMask(
  2606.     HANDLE hFile,
  2607.     DWORD dwEvtMask
  2608.     );
  2609.  
  2610. WINBASEAPI
  2611. BOOL
  2612. WINAPI
  2613. SetCommState(
  2614.     HANDLE hFile,
  2615.     LPDCB lpDCB
  2616.     );
  2617.  
  2618. WINBASEAPI
  2619. BOOL
  2620. WINAPI
  2621. SetCommTimeouts(
  2622.     HANDLE hFile,
  2623.     LPCOMMTIMEOUTS lpCommTimeouts
  2624.     );
  2625.  
  2626. WINBASEAPI
  2627. BOOL
  2628. WINAPI
  2629. TransmitCommChar(
  2630.     HANDLE hFile,
  2631.     char cChar
  2632.     );
  2633.  
  2634. WINBASEAPI
  2635. BOOL
  2636. WINAPI
  2637. WaitCommEvent(
  2638.     HANDLE hFile,
  2639.     LPDWORD lpEvtMask,
  2640.     LPOVERLAPPED lpOverlapped
  2641.     );
  2642.  
  2643.  
  2644. WINBASEAPI
  2645. DWORD
  2646. WINAPI
  2647. SetTapePosition(
  2648.     HANDLE hDevice,
  2649.     DWORD dwPositionMethod,
  2650.     DWORD dwPartition,
  2651.     DWORD dwOffsetLow,
  2652.     DWORD dwOffsetHigh,
  2653.     BOOL bImmediate
  2654.     );
  2655.  
  2656. WINBASEAPI
  2657. DWORD
  2658. WINAPI
  2659. GetTapePosition(
  2660.     HANDLE hDevice,
  2661.     DWORD dwPositionType,
  2662.     LPDWORD lpdwPartition,
  2663.     LPDWORD lpdwOffsetLow,
  2664.     LPDWORD lpdwOffsetHigh
  2665.     );
  2666.  
  2667. WINBASEAPI
  2668. DWORD
  2669. WINAPI
  2670. PrepareTape(
  2671.     HANDLE hDevice,
  2672.     DWORD dwOperation,
  2673.     BOOL bImmediate
  2674.     );
  2675.  
  2676. WINBASEAPI
  2677. DWORD
  2678. WINAPI
  2679. EraseTape(
  2680.     HANDLE hDevice,
  2681.     DWORD dwEraseType,
  2682.     BOOL bImmediate
  2683.     );
  2684.  
  2685. WINBASEAPI
  2686. DWORD
  2687. WINAPI
  2688. CreateTapePartition(
  2689.     HANDLE hDevice,
  2690.     DWORD dwPartitionMethod,
  2691.     DWORD dwCount,
  2692.     DWORD dwSize
  2693.     );
  2694.  
  2695. WINBASEAPI
  2696. DWORD
  2697. WINAPI
  2698. WriteTapemark(
  2699.     HANDLE hDevice,
  2700.     DWORD dwTapemarkType,
  2701.     DWORD dwTapemarkCount,
  2702.     BOOL bImmediate
  2703.     );
  2704.  
  2705. WINBASEAPI
  2706. DWORD
  2707. WINAPI
  2708. GetTapeStatus(
  2709.     HANDLE hDevice
  2710.     );
  2711.  
  2712. WINBASEAPI
  2713. DWORD
  2714. WINAPI
  2715. GetTapeParameters(
  2716.     HANDLE hDevice,
  2717.     DWORD dwOperation,
  2718.     LPDWORD lpdwSize,
  2719.     LPVOID lpTapeInformation
  2720.     );
  2721.  
  2722. #define GET_TAPE_MEDIA_INFORMATION 0
  2723. #define GET_TAPE_DRIVE_INFORMATION 1
  2724.  
  2725. WINBASEAPI
  2726. DWORD
  2727. WINAPI
  2728. SetTapeParameters(
  2729.     HANDLE hDevice,
  2730.     DWORD dwOperation,
  2731.     LPVOID lpTapeInformation
  2732.     );
  2733.  
  2734. #define SET_TAPE_MEDIA_INFORMATION 0
  2735. #define SET_TAPE_DRIVE_INFORMATION 1
  2736.  
  2737. WINBASEAPI
  2738. BOOL
  2739. WINAPI
  2740. Beep(
  2741.     DWORD dwFreq,
  2742.     DWORD dwDuration
  2743.     );
  2744.  
  2745. WINBASEAPI
  2746. int
  2747. WINAPI
  2748. MulDiv(
  2749.     int nNumber,
  2750.     int nNumerator,
  2751.     int nDenominator
  2752.     );
  2753.  
  2754. WINBASEAPI
  2755. VOID
  2756. WINAPI
  2757. GetSystemTime(
  2758.     LPSYSTEMTIME lpSystemTime
  2759.     );
  2760.  
  2761. WINBASEAPI
  2762. VOID
  2763. WINAPI
  2764. GetSystemTimeAsFileTime(
  2765.     LPFILETIME lpSystemTimeAsFileTime
  2766.     );
  2767.  
  2768. WINBASEAPI
  2769. BOOL
  2770. WINAPI
  2771. SetSystemTime(
  2772.     CONST SYSTEMTIME *lpSystemTime
  2773.     );
  2774.  
  2775. WINBASEAPI
  2776. VOID
  2777. WINAPI
  2778. GetLocalTime(
  2779.     LPSYSTEMTIME lpSystemTime
  2780.     );
  2781.  
  2782. WINBASEAPI
  2783. BOOL
  2784. WINAPI
  2785. SetLocalTime(
  2786.     CONST SYSTEMTIME *lpSystemTime
  2787.     );
  2788.  
  2789. WINBASEAPI
  2790. VOID
  2791. WINAPI
  2792. GetSystemInfo(
  2793.     LPSYSTEM_INFO lpSystemInfo
  2794.     );
  2795.  
  2796. WINBASEAPI
  2797. BOOL
  2798. WINAPI
  2799. IsProcessorFeaturePresent(
  2800.     DWORD ProcessorFeature
  2801.     );
  2802.  
  2803. typedef struct _TIME_ZONE_INFORMATION {
  2804.     LONG Bias;
  2805.     WCHAR StandardName[ 32 ];
  2806.     SYSTEMTIME StandardDate;
  2807.     LONG StandardBias;
  2808.     WCHAR DaylightName[ 32 ];
  2809.     SYSTEMTIME DaylightDate;
  2810.     LONG DaylightBias;
  2811. } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
  2812.  
  2813. WINBASEAPI
  2814. BOOL
  2815. WINAPI
  2816. SystemTimeToTzSpecificLocalTime(
  2817.     LPTIME_ZONE_INFORMATION lpTimeZoneInformation,
  2818.     LPSYSTEMTIME lpUniversalTime,
  2819.     LPSYSTEMTIME lpLocalTime
  2820.     );
  2821.  
  2822. WINBASEAPI
  2823. DWORD
  2824. WINAPI
  2825. GetTimeZoneInformation(
  2826.     LPTIME_ZONE_INFORMATION lpTimeZoneInformation
  2827.     );
  2828.  
  2829. WINBASEAPI
  2830. BOOL
  2831. WINAPI
  2832. SetTimeZoneInformation(
  2833.     CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation
  2834.     );
  2835.  
  2836.  
  2837. //
  2838. // Routines to convert back and forth between system time and file time
  2839. //
  2840.  
  2841. WINBASEAPI
  2842. BOOL
  2843. WINAPI
  2844. SystemTimeToFileTime(
  2845.     CONST SYSTEMTIME *lpSystemTime,
  2846.     LPFILETIME lpFileTime
  2847.     );
  2848.  
  2849. WINBASEAPI
  2850. BOOL
  2851. WINAPI
  2852. FileTimeToLocalFileTime(
  2853.     CONST FILETIME *lpFileTime,
  2854.     LPFILETIME lpLocalFileTime
  2855.     );
  2856.  
  2857. WINBASEAPI
  2858. BOOL
  2859. WINAPI
  2860. LocalFileTimeToFileTime(
  2861.     CONST FILETIME *lpLocalFileTime,
  2862.     LPFILETIME lpFileTime
  2863.     );
  2864.  
  2865. WINBASEAPI
  2866. BOOL
  2867. WINAPI
  2868. FileTimeToSystemTime(
  2869.     CONST FILETIME *lpFileTime,
  2870.     LPSYSTEMTIME lpSystemTime
  2871.     );
  2872.  
  2873. WINBASEAPI
  2874. LONG
  2875. WINAPI
  2876. CompareFileTime(
  2877.     CONST FILETIME *lpFileTime1,
  2878.     CONST FILETIME *lpFileTime2
  2879.     );
  2880.  
  2881. WINBASEAPI
  2882. BOOL
  2883. WINAPI
  2884. FileTimeToDosDateTime(
  2885.     CONST FILETIME *lpFileTime,
  2886.     LPWORD lpFatDate,
  2887.     LPWORD lpFatTime
  2888.     );
  2889.  
  2890. WINBASEAPI
  2891. BOOL
  2892. WINAPI
  2893. DosDateTimeToFileTime(
  2894.     WORD wFatDate,
  2895.     WORD wFatTime,
  2896.     LPFILETIME lpFileTime
  2897.     );
  2898.  
  2899. WINBASEAPI
  2900. DWORD
  2901. WINAPI
  2902. GetTickCount(
  2903.     VOID
  2904.     );
  2905.  
  2906. WINBASEAPI
  2907. BOOL
  2908. WINAPI
  2909. SetSystemTimeAdjustment(
  2910.     DWORD dwTimeAdjustment,
  2911.     BOOL  bTimeAdjustmentDisabled
  2912.     );
  2913.  
  2914. WINBASEAPI
  2915. BOOL
  2916. WINAPI
  2917. GetSystemTimeAdjustment(
  2918.     PDWORD lpTimeAdjustment,
  2919.     PDWORD lpTimeIncrement,
  2920.     PBOOL  lpTimeAdjustmentDisabled
  2921.     );
  2922.  
  2923. #if !defined(MIDL_PASS)
  2924. WINBASEAPI
  2925. DWORD
  2926. WINAPI
  2927. FormatMessageA(
  2928.     DWORD dwFlags,
  2929.     LPCVOID lpSource,
  2930.     DWORD dwMessageId,
  2931.     DWORD dwLanguageId,
  2932.     LPSTR lpBuffer,
  2933.     DWORD nSize,
  2934.     va_list *Arguments
  2935.     );
  2936. WINBASEAPI
  2937. DWORD
  2938. WINAPI
  2939. FormatMessageW(
  2940.     DWORD dwFlags,
  2941.     LPCVOID lpSource,
  2942.     DWORD dwMessageId,
  2943.     DWORD dwLanguageId,
  2944.     LPWSTR lpBuffer,
  2945.     DWORD nSize,
  2946.     va_list *Arguments
  2947.     );
  2948. #ifdef UNICODE
  2949. #define FormatMessage  FormatMessageW
  2950. #else
  2951. #define FormatMessage  FormatMessageA
  2952. #endif // !UNICODE
  2953. #endif
  2954.  
  2955. #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
  2956. #define FORMAT_MESSAGE_IGNORE_INSERTS  0x00000200
  2957. #define FORMAT_MESSAGE_FROM_STRING     0x00000400
  2958. #define FORMAT_MESSAGE_FROM_HMODULE    0x00000800
  2959. #define FORMAT_MESSAGE_FROM_SYSTEM     0x00001000
  2960. #define FORMAT_MESSAGE_ARGUMENT_ARRAY  0x00002000
  2961. #define FORMAT_MESSAGE_MAX_WIDTH_MASK  0x000000FF
  2962.  
  2963.  
  2964. WINBASEAPI
  2965. BOOL
  2966. WINAPI
  2967. CreatePipe(
  2968.     PHANDLE hReadPipe,
  2969.     PHANDLE hWritePipe,
  2970.     LPSECURITY_ATTRIBUTES lpPipeAttributes,
  2971.     DWORD nSize
  2972.     );
  2973.  
  2974. WINBASEAPI
  2975. BOOL
  2976. WINAPI
  2977. ConnectNamedPipe(
  2978.     HANDLE hNamedPipe,
  2979.     LPOVERLAPPED lpOverlapped
  2980.     );
  2981.  
  2982. WINBASEAPI
  2983. BOOL
  2984. WINAPI
  2985. DisconnectNamedPipe(
  2986.     HANDLE hNamedPipe
  2987.     );
  2988.  
  2989. WINBASEAPI
  2990. BOOL
  2991. WINAPI
  2992. SetNamedPipeHandleState(
  2993.     HANDLE hNamedPipe,
  2994.     LPDWORD lpMode,
  2995.     LPDWORD lpMaxCollectionCount,
  2996.     LPDWORD lpCollectDataTimeout
  2997.     );
  2998.  
  2999. WINBASEAPI
  3000. BOOL
  3001. WINAPI
  3002. GetNamedPipeInfo(
  3003.     HANDLE hNamedPipe,
  3004.     LPDWORD lpFlags,
  3005.     LPDWORD lpOutBufferSize,
  3006.     LPDWORD lpInBufferSize,
  3007.     LPDWORD lpMaxInstances
  3008.     );
  3009.  
  3010. WINBASEAPI
  3011. BOOL
  3012. WINAPI
  3013. PeekNamedPipe(
  3014.     HANDLE hNamedPipe,
  3015.     LPVOID lpBuffer,
  3016.     DWORD nBufferSize,
  3017.     LPDWORD lpBytesRead,
  3018.     LPDWORD lpTotalBytesAvail,
  3019.     LPDWORD lpBytesLeftThisMessage
  3020.     );
  3021.  
  3022. WINBASEAPI
  3023. BOOL
  3024. WINAPI
  3025. TransactNamedPipe(
  3026.     HANDLE hNamedPipe,
  3027.     LPVOID lpInBuffer,
  3028.     DWORD nInBufferSize,
  3029.     LPVOID lpOutBuffer,
  3030.     DWORD nOutBufferSize,
  3031.     LPDWORD lpBytesRead,
  3032.     LPOVERLAPPED lpOverlapped
  3033.     );
  3034.  
  3035. WINBASEAPI
  3036. HANDLE
  3037. WINAPI
  3038. CreateMailslotA(
  3039.     LPCSTR lpName,
  3040.     DWORD nMaxMessageSize,
  3041.     DWORD lReadTimeout,
  3042.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  3043.     );
  3044. WINBASEAPI
  3045. HANDLE
  3046. WINAPI
  3047. CreateMailslotW(
  3048.     LPCWSTR lpName,
  3049.     DWORD nMaxMessageSize,
  3050.     DWORD lReadTimeout,
  3051.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  3052.     );
  3053. #ifdef UNICODE
  3054. #define CreateMailslot  CreateMailslotW
  3055. #else
  3056. #define CreateMailslot  CreateMailslotA
  3057. #endif // !UNICODE
  3058.  
  3059. WINBASEAPI
  3060. BOOL
  3061. WINAPI
  3062. GetMailslotInfo(
  3063.     HANDLE hMailslot,
  3064.     LPDWORD lpMaxMessageSize,
  3065.     LPDWORD lpNextSize,
  3066.     LPDWORD lpMessageCount,
  3067.     LPDWORD lpReadTimeout
  3068.     );
  3069.  
  3070. WINBASEAPI
  3071. BOOL
  3072. WINAPI
  3073. SetMailslotInfo(
  3074.     HANDLE hMailslot,
  3075.     DWORD lReadTimeout
  3076.     );
  3077.  
  3078. WINBASEAPI
  3079. LPVOID
  3080. WINAPI
  3081. MapViewOfFile(
  3082.     HANDLE hFileMappingObject,
  3083.     DWORD dwDesiredAccess,
  3084.     DWORD dwFileOffsetHigh,
  3085.     DWORD dwFileOffsetLow,
  3086.     DWORD dwNumberOfBytesToMap
  3087.     );
  3088.  
  3089. WINBASEAPI
  3090. BOOL
  3091. WINAPI
  3092. FlushViewOfFile(
  3093.     LPCVOID lpBaseAddress,
  3094.     DWORD dwNumberOfBytesToFlush
  3095.     );
  3096.  
  3097. WINBASEAPI
  3098. BOOL
  3099. WINAPI
  3100. UnmapViewOfFile(
  3101.     LPCVOID lpBaseAddress
  3102.     );
  3103.  
  3104.  
  3105. //
  3106. // _l Compat Functions
  3107. //
  3108.  
  3109. WINBASEAPI
  3110. int
  3111. WINAPI
  3112. lstrcmpA(
  3113.     LPCSTR lpString1,
  3114.     LPCSTR lpString2
  3115.     );
  3116. WINBASEAPI
  3117. int
  3118. WINAPI
  3119. lstrcmpW(
  3120.     LPCWSTR lpString1,
  3121.     LPCWSTR lpString2
  3122.     );
  3123. #ifdef UNICODE
  3124. #define lstrcmp  lstrcmpW
  3125. #else
  3126. #define lstrcmp  lstrcmpA
  3127. #endif // !UNICODE
  3128.  
  3129. WINBASEAPI
  3130. int
  3131. WINAPI
  3132. lstrcmpiA(
  3133.     LPCSTR lpString1,
  3134.     LPCSTR lpString2
  3135.     );
  3136. WINBASEAPI
  3137. int
  3138. WINAPI
  3139. lstrcmpiW(
  3140.     LPCWSTR lpString1,
  3141.     LPCWSTR lpString2
  3142.     );
  3143. #ifdef UNICODE
  3144. #define lstrcmpi  lstrcmpiW
  3145. #else
  3146. #define lstrcmpi  lstrcmpiA
  3147. #endif // !UNICODE
  3148.  
  3149. WINBASEAPI
  3150. LPSTR
  3151. WINAPI
  3152. lstrcpynA(
  3153.     LPSTR lpString1,
  3154.     LPCSTR lpString2,
  3155.     int iMaxLength
  3156.     );
  3157. WINBASEAPI
  3158. LPWSTR
  3159. WINAPI
  3160. lstrcpynW(
  3161.     LPWSTR lpString1,
  3162.     LPCWSTR lpString2,
  3163.     int iMaxLength
  3164.     );
  3165. #ifdef UNICODE
  3166. #define lstrcpyn  lstrcpynW
  3167. #else
  3168. #define lstrcpyn  lstrcpynA
  3169. #endif // !UNICODE
  3170.  
  3171. WINBASEAPI
  3172. LPSTR
  3173. WINAPI
  3174. lstrcpyA(
  3175.     LPSTR lpString1,
  3176.     LPCSTR lpString2
  3177.     );
  3178. WINBASEAPI
  3179. LPWSTR
  3180. WINAPI
  3181. lstrcpyW(
  3182.     LPWSTR lpString1,
  3183.     LPCWSTR lpString2
  3184.     );
  3185. #ifdef UNICODE
  3186. #define lstrcpy  lstrcpyW
  3187. #else
  3188. #define lstrcpy  lstrcpyA
  3189. #endif // !UNICODE
  3190.  
  3191. WINBASEAPI
  3192. LPSTR
  3193. WINAPI
  3194. lstrcatA(
  3195.     LPSTR lpString1,
  3196.     LPCSTR lpString2
  3197.     );
  3198. WINBASEAPI
  3199. LPWSTR
  3200. WINAPI
  3201. lstrcatW(
  3202.     LPWSTR lpString1,
  3203.     LPCWSTR lpString2
  3204.     );
  3205. #ifdef UNICODE
  3206. #define lstrcat  lstrcatW
  3207. #else
  3208. #define lstrcat  lstrcatA
  3209. #endif // !UNICODE
  3210.  
  3211. WINBASEAPI
  3212. int
  3213. WINAPI
  3214. lstrlenA(
  3215.     LPCSTR lpString
  3216.     );
  3217. WINBASEAPI
  3218. int
  3219. WINAPI
  3220. lstrlenW(
  3221.     LPCWSTR lpString
  3222.     );
  3223. #ifdef UNICODE
  3224. #define lstrlen  lstrlenW
  3225. #else
  3226. #define lstrlen  lstrlenA
  3227. #endif // !UNICODE
  3228.  
  3229. WINBASEAPI
  3230. HFILE
  3231. WINAPI
  3232. OpenFile(
  3233.     LPCSTR lpFileName,
  3234.     LPOFSTRUCT lpReOpenBuff,
  3235.     UINT uStyle
  3236.     );
  3237.  
  3238. WINBASEAPI
  3239. HFILE
  3240. WINAPI
  3241. _lopen(
  3242.     LPCSTR lpPathName,
  3243.     int iReadWrite
  3244.     );
  3245.  
  3246. WINBASEAPI
  3247. HFILE
  3248. WINAPI
  3249. _lcreat(
  3250.     LPCSTR lpPathName,
  3251.     int  iAttribute
  3252.     );
  3253.  
  3254. WINBASEAPI
  3255. UINT
  3256. WINAPI
  3257. _lread(
  3258.     HFILE hFile,
  3259.     LPVOID lpBuffer,
  3260.     UINT uBytes
  3261.     );
  3262.  
  3263. WINBASEAPI
  3264. UINT
  3265. WINAPI
  3266. _lwrite(
  3267.     HFILE hFile,
  3268.     LPCSTR lpBuffer,
  3269.     UINT uBytes
  3270.     );
  3271.  
  3272. WINBASEAPI
  3273. long
  3274. WINAPI
  3275. _hread(
  3276.     HFILE hFile,
  3277.     LPVOID lpBuffer,
  3278.     long lBytes
  3279.     );
  3280.  
  3281. WINBASEAPI
  3282. long
  3283. WINAPI
  3284. _hwrite(
  3285.     HFILE hFile,
  3286.     LPCSTR lpBuffer,
  3287.     long lBytes
  3288.     );
  3289.  
  3290. WINBASEAPI
  3291. HFILE
  3292. WINAPI
  3293. _lclose(
  3294.     HFILE hFile
  3295.     );
  3296.  
  3297. WINBASEAPI
  3298. LONG
  3299. WINAPI
  3300. _llseek(
  3301.     HFILE hFile,
  3302.     LONG lOffset,
  3303.     int iOrigin
  3304.     );
  3305.  
  3306. WINADVAPI
  3307. BOOL
  3308. WINAPI
  3309. IsTextUnicode(
  3310.     CONST LPVOID lpBuffer,
  3311.     int cb,
  3312.     LPINT lpi
  3313.     );
  3314.  
  3315. WINBASEAPI
  3316. DWORD
  3317. WINAPI
  3318. TlsAlloc(
  3319.     VOID
  3320.     );
  3321.  
  3322. #define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
  3323.  
  3324. WINBASEAPI
  3325. LPVOID
  3326. WINAPI
  3327. TlsGetValue(
  3328.     DWORD dwTlsIndex
  3329.     );
  3330.  
  3331. WINBASEAPI
  3332. BOOL
  3333. WINAPI
  3334. TlsSetValue(
  3335.     DWORD dwTlsIndex,
  3336.     LPVOID lpTlsValue
  3337.     );
  3338.  
  3339. WINBASEAPI
  3340. BOOL
  3341. WINAPI
  3342. TlsFree(
  3343.     DWORD dwTlsIndex
  3344.     );
  3345.  
  3346. typedef
  3347. VOID
  3348. (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)(
  3349.     DWORD dwErrorCode,
  3350.     DWORD dwNumberOfBytesTransfered,
  3351.     LPOVERLAPPED lpOverlapped
  3352.     );
  3353.  
  3354. WINBASEAPI
  3355. DWORD
  3356. WINAPI
  3357. SleepEx(
  3358.     DWORD dwMilliseconds,
  3359.     BOOL bAlertable
  3360.     );
  3361.  
  3362. WINBASEAPI
  3363. DWORD
  3364. WINAPI
  3365. WaitForSingleObjectEx(
  3366.     HANDLE hHandle,
  3367.     DWORD dwMilliseconds,
  3368.     BOOL bAlertable
  3369.     );
  3370.  
  3371. WINBASEAPI
  3372. DWORD
  3373. WINAPI
  3374. WaitForMultipleObjectsEx(
  3375.     DWORD nCount,
  3376.     CONST HANDLE *lpHandles,
  3377.     BOOL bWaitAll,
  3378.     DWORD dwMilliseconds,
  3379.     BOOL bAlertable
  3380.     );
  3381.  
  3382. #if(_WIN32_WINNT >= 0x0400)
  3383. WINBASEAPI
  3384. DWORD
  3385. WINAPI
  3386. SignalObjectAndWait(
  3387.     HANDLE hObjectToSignal,
  3388.     HANDLE hObjectToWaitOn,
  3389.     DWORD dwMilliseconds,
  3390.     BOOL bAlertable
  3391.     );
  3392. #endif /* _WIN32_WINNT >= 0x0400 */
  3393.  
  3394. WINBASEAPI
  3395. BOOL
  3396. WINAPI
  3397. ReadFileEx(
  3398.     HANDLE hFile,
  3399.     LPVOID lpBuffer,
  3400.     DWORD nNumberOfBytesToRead,
  3401.     LPOVERLAPPED lpOverlapped,
  3402.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  3403.     );
  3404.  
  3405. WINBASEAPI
  3406. BOOL
  3407. WINAPI
  3408. WriteFileEx(
  3409.     HANDLE hFile,
  3410.     LPCVOID lpBuffer,
  3411.     DWORD nNumberOfBytesToWrite,
  3412.     LPOVERLAPPED lpOverlapped,
  3413.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  3414.     );
  3415.  
  3416. WINBASEAPI
  3417. BOOL
  3418. WINAPI
  3419. BackupRead(
  3420.     HANDLE hFile,
  3421.     LPBYTE lpBuffer,
  3422.     DWORD nNumberOfBytesToRead,
  3423.     LPDWORD lpNumberOfBytesRead,
  3424.     BOOL bAbort,
  3425.     BOOL bProcessSecurity,
  3426.     LPVOID *lpContext
  3427.     );
  3428.  
  3429. WINBASEAPI
  3430. BOOL
  3431. WINAPI
  3432. BackupSeek(
  3433.     HANDLE hFile,
  3434.     DWORD  dwLowBytesToSeek,
  3435.     DWORD  dwHighBytesToSeek,
  3436.     LPDWORD lpdwLowByteSeeked,
  3437.     LPDWORD lpdwHighByteSeeked,
  3438.     LPVOID *lpContext
  3439.     );
  3440.  
  3441. WINBASEAPI
  3442. BOOL
  3443. WINAPI
  3444. BackupWrite(
  3445.     HANDLE hFile,
  3446.     LPBYTE lpBuffer,
  3447.     DWORD nNumberOfBytesToWrite,
  3448.     LPDWORD lpNumberOfBytesWritten,
  3449.     BOOL bAbort,
  3450.     BOOL bProcessSecurity,
  3451.     LPVOID *lpContext
  3452.     );
  3453.  
  3454. //
  3455. //  Stream id structure
  3456. //
  3457. typedef struct _WIN32_STREAM_ID {
  3458.         DWORD          dwStreamId ;
  3459.         DWORD          dwStreamAttributes ;
  3460.         LARGE_INTEGER  Size ;
  3461.         DWORD          dwStreamNameSize ;
  3462.         WCHAR          cStreamName[ ANYSIZE_ARRAY ] ;
  3463. } WIN32_STREAM_ID, *LPWIN32_STREAM_ID ;
  3464.  
  3465. //
  3466. //  Stream Ids
  3467. //
  3468.  
  3469. #define BACKUP_INVALID          0x00000000
  3470. #define BACKUP_DATA             0x00000001
  3471. #define BACKUP_EA_DATA          0x00000002
  3472. #define BACKUP_SECURITY_DATA    0x00000003
  3473. #define BACKUP_ALTERNATE_DATA   0x00000004
  3474. #define BACKUP_LINK             0x00000005
  3475. #define BACKUP_PROPERTY_DATA    0x00000006
  3476.  
  3477. //
  3478. //  Stream Attributes
  3479. //
  3480.  
  3481. #define STREAM_NORMAL_ATTRIBUTE         0x00000000
  3482. #define STREAM_MODIFIED_WHEN_READ       0x00000001
  3483. #define STREAM_CONTAINS_SECURITY        0x00000002
  3484. #define STREAM_CONTAINS_PROPERTIES      0x00000004
  3485.  
  3486. //
  3487. // Dual Mode API below this line. Dual Mode Structures also included.
  3488. //
  3489.  
  3490. #define STARTF_USESHOWWINDOW    0x00000001
  3491. #define STARTF_USESIZE          0x00000002
  3492. #define STARTF_USEPOSITION      0x00000004
  3493. #define STARTF_USECOUNTCHARS    0x00000008
  3494. #define STARTF_USEFILLATTRIBUTE 0x00000010
  3495. #define STARTF_RUNFULLSCREEN    0x00000020  // ignored for non-x86 platforms
  3496. #define STARTF_FORCEONFEEDBACK  0x00000040
  3497. #define STARTF_FORCEOFFFEEDBACK 0x00000080
  3498. #define STARTF_USESTDHANDLES    0x00000100
  3499. #if(WINVER >= 0x0400)
  3500. #define STARTF_USEHOTKEY        0x00000200
  3501. #endif /* WINVER >= 0x0400 */
  3502.  
  3503. typedef struct _STARTUPINFOA {
  3504.     DWORD   cb;
  3505.     LPSTR   lpReserved;
  3506.     LPSTR   lpDesktop;
  3507.     LPSTR   lpTitle;
  3508.     DWORD   dwX;
  3509.     DWORD   dwY;
  3510.     DWORD   dwXSize;
  3511.     DWORD   dwYSize;
  3512.     DWORD   dwXCountChars;
  3513.     DWORD   dwYCountChars;
  3514.     DWORD   dwFillAttribute;
  3515.     DWORD   dwFlags;
  3516.     WORD    wShowWindow;
  3517.     WORD    cbReserved2;
  3518.     LPBYTE  lpReserved2;
  3519.     HANDLE  hStdInput;
  3520.     HANDLE  hStdOutput;
  3521.     HANDLE  hStdError;
  3522. } STARTUPINFOA, *LPSTARTUPINFOA;
  3523. typedef struct _STARTUPINFOW {
  3524.     DWORD   cb;
  3525.     LPWSTR  lpReserved;
  3526.     LPWSTR  lpDesktop;
  3527.     LPWSTR  lpTitle;
  3528.     DWORD   dwX;
  3529.     DWORD   dwY;
  3530.     DWORD   dwXSize;
  3531.     DWORD   dwYSize;
  3532.     DWORD   dwXCountChars;
  3533.     DWORD   dwYCountChars;
  3534.     DWORD   dwFillAttribute;
  3535.     DWORD   dwFlags;
  3536.     WORD    wShowWindow;
  3537.     WORD    cbReserved2;
  3538.     LPBYTE  lpReserved2;
  3539.     HANDLE  hStdInput;
  3540.     HANDLE  hStdOutput;
  3541.     HANDLE  hStdError;
  3542. } STARTUPINFOW, *LPSTARTUPINFOW;
  3543. #ifdef UNICODE
  3544. typedef STARTUPINFOW STARTUPINFO;
  3545. typedef LPSTARTUPINFOW LPSTARTUPINFO;
  3546. #else
  3547. typedef STARTUPINFOA STARTUPINFO;
  3548. typedef LPSTARTUPINFOA LPSTARTUPINFO;
  3549. #endif // UNICODE
  3550.  
  3551. #define SHUTDOWN_NORETRY                0x00000001
  3552.  
  3553. typedef struct _WIN32_FIND_DATAA {
  3554.     DWORD dwFileAttributes;
  3555.     FILETIME ftCreationTime;
  3556.     FILETIME ftLastAccessTime;
  3557.     FILETIME ftLastWriteTime;
  3558.     DWORD nFileSizeHigh;
  3559.     DWORD nFileSizeLow;
  3560.     DWORD dwReserved0;
  3561.     DWORD dwReserved1;
  3562.     CHAR   cFileName[ MAX_PATH ];
  3563.     CHAR   cAlternateFileName[ 14 ];
  3564. } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
  3565. typedef struct _WIN32_FIND_DATAW {
  3566.     DWORD dwFileAttributes;
  3567.     FILETIME ftCreationTime;
  3568.     FILETIME ftLastAccessTime;
  3569.     FILETIME ftLastWriteTime;
  3570.     DWORD nFileSizeHigh;
  3571.     DWORD nFileSizeLow;
  3572.     DWORD dwReserved0;
  3573.     DWORD dwReserved1;
  3574.     WCHAR  cFileName[ MAX_PATH ];
  3575.     WCHAR  cAlternateFileName[ 14 ];
  3576. } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
  3577. #ifdef UNICODE
  3578. typedef WIN32_FIND_DATAW WIN32_FIND_DATA;
  3579. typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA;
  3580. typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA;
  3581. #else
  3582. typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
  3583. typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
  3584. typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
  3585. #endif // UNICODE
  3586.  
  3587. typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
  3588.     DWORD dwFileAttributes;
  3589.     FILETIME ftCreationTime;
  3590.     FILETIME ftLastAccessTime;
  3591.     FILETIME ftLastWriteTime;
  3592.     DWORD nFileSizeHigh;
  3593.     DWORD nFileSizeLow;
  3594. } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
  3595.  
  3596. WINBASEAPI
  3597. HANDLE
  3598. WINAPI
  3599. CreateMutexA(
  3600.     LPSECURITY_ATTRIBUTES lpMutexAttributes,
  3601.     BOOL bInitialOwner,
  3602.     LPCSTR lpName
  3603.     );
  3604. WINBASEAPI
  3605. HANDLE
  3606. WINAPI
  3607. CreateMutexW(
  3608.     LPSECURITY_ATTRIBUTES lpMutexAttributes,
  3609.     BOOL bInitialOwner,
  3610.     LPCWSTR lpName
  3611.     );
  3612. #ifdef UNICODE
  3613. #define CreateMutex  CreateMutexW
  3614. #else
  3615. #define CreateMutex  CreateMutexA
  3616. #endif // !UNICODE
  3617.  
  3618. WINBASEAPI
  3619. HANDLE
  3620. WINAPI
  3621. OpenMutexA(
  3622.     DWORD dwDesiredAccess,
  3623.     BOOL bInheritHandle,
  3624.     LPCSTR lpName
  3625.     );
  3626. WINBASEAPI
  3627. HANDLE
  3628. WINAPI
  3629. OpenMutexW(
  3630.     DWORD dwDesiredAccess,
  3631.     BOOL bInheritHandle,
  3632.     LPCWSTR lpName
  3633.     );
  3634. #ifdef UNICODE
  3635. #define OpenMutex  OpenMutexW
  3636. #else
  3637. #define OpenMutex  OpenMutexA
  3638. #endif // !UNICODE
  3639.  
  3640. WINBASEAPI
  3641. HANDLE
  3642. WINAPI
  3643. CreateEventA(
  3644.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  3645.     BOOL bManualReset,
  3646.     BOOL bInitialState,
  3647.     LPCSTR lpName
  3648.     );
  3649. WINBASEAPI
  3650. HANDLE
  3651. WINAPI
  3652. CreateEventW(
  3653.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  3654.     BOOL bManualReset,
  3655.     BOOL bInitialState,
  3656.     LPCWSTR lpName
  3657.     );
  3658. #ifdef UNICODE
  3659. #define CreateEvent  CreateEventW
  3660. #else
  3661. #define CreateEvent  CreateEventA
  3662. #endif // !UNICODE
  3663.  
  3664. WINBASEAPI
  3665. HANDLE
  3666. WINAPI
  3667. OpenEventA(
  3668.     DWORD dwDesiredAccess,
  3669.     BOOL bInheritHandle,
  3670.     LPCSTR lpName
  3671.     );
  3672. WINBASEAPI
  3673. HANDLE
  3674. WINAPI
  3675. OpenEventW(
  3676.     DWORD dwDesiredAccess,
  3677.     BOOL bInheritHandle,
  3678.     LPCWSTR lpName
  3679.     );
  3680. #ifdef UNICODE
  3681. #define OpenEvent  OpenEventW
  3682. #else
  3683. #define OpenEvent  OpenEventA
  3684. #endif // !UNICODE
  3685.  
  3686. WINBASEAPI
  3687. HANDLE
  3688. WINAPI
  3689. CreateSemaphoreA(
  3690.     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  3691.     LONG lInitialCount,
  3692.     LONG lMaximumCount,
  3693.     LPCSTR lpName
  3694.     );
  3695. WINBASEAPI
  3696. HANDLE
  3697. WINAPI
  3698. CreateSemaphoreW(
  3699.     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  3700.     LONG lInitialCount,
  3701.     LONG lMaximumCount,
  3702.     LPCWSTR lpName
  3703.     );
  3704. #ifdef UNICODE
  3705. #define CreateSemaphore  CreateSemaphoreW
  3706. #else
  3707. #define CreateSemaphore  CreateSemaphoreA
  3708. #endif // !UNICODE
  3709.  
  3710. WINBASEAPI
  3711. HANDLE
  3712. WINAPI
  3713. OpenSemaphoreA(
  3714.     DWORD dwDesiredAccess,
  3715.     BOOL bInheritHandle,
  3716.     LPCSTR lpName
  3717.     );
  3718. WINBASEAPI
  3719. HANDLE
  3720. WINAPI
  3721. OpenSemaphoreW(
  3722.     DWORD dwDesiredAccess,
  3723.     BOOL bInheritHandle,
  3724.     LPCWSTR lpName
  3725.     );
  3726. #ifdef UNICODE
  3727. #define OpenSemaphore  OpenSemaphoreW
  3728. #else
  3729. #define OpenSemaphore  OpenSemaphoreA
  3730. #endif // !UNICODE
  3731.  
  3732. #if(_WIN32_WINNT >= 0x0400)
  3733. typedef
  3734. VOID
  3735. (APIENTRY *PTIMERAPCROUTINE)(
  3736.     LPVOID lpArgToCompletionRoutine,
  3737.     DWORD dwTimerLowValue,
  3738.     DWORD dwTimerHighValue
  3739.     );
  3740.  
  3741. WINBASEAPI
  3742. HANDLE
  3743. WINAPI
  3744. CreateWaitableTimerA(
  3745.     LPSECURITY_ATTRIBUTES lpTimerAttributes,
  3746.     BOOL bManualReset,
  3747.     LPCSTR lpTimerName
  3748.     );
  3749. WINBASEAPI
  3750. HANDLE
  3751. WINAPI
  3752. CreateWaitableTimerW(
  3753.     LPSECURITY_ATTRIBUTES lpTimerAttributes,
  3754.     BOOL bManualReset,
  3755.     LPCWSTR lpTimerName
  3756.     );
  3757. #ifdef UNICODE
  3758. #define CreateWaitableTimer  CreateWaitableTimerW
  3759. #else
  3760. #define CreateWaitableTimer  CreateWaitableTimerA
  3761. #endif // !UNICODE
  3762.  
  3763. WINBASEAPI
  3764. HANDLE
  3765. WINAPI
  3766. OpenWaitableTimerA(
  3767.     DWORD dwDesiredAccess,
  3768.     BOOL bInheritHandle,
  3769.     LPCSTR lpTimerName
  3770.     );
  3771. WINBASEAPI
  3772. HANDLE
  3773. WINAPI
  3774. OpenWaitableTimerW(
  3775.     DWORD dwDesiredAccess,
  3776.     BOOL bInheritHandle,
  3777.     LPCWSTR lpTimerName
  3778.     );
  3779. #ifdef UNICODE
  3780. #define OpenWaitableTimer  OpenWaitableTimerW
  3781. #else
  3782. #define OpenWaitableTimer  OpenWaitableTimerA
  3783. #endif // !UNICODE
  3784.  
  3785. WINBASEAPI
  3786. BOOL
  3787. WINAPI
  3788. SetWaitableTimer(
  3789.     HANDLE hTimer,
  3790.     const LARGE_INTEGER *lpDueTime,
  3791.     LONG lPeriod,
  3792.     PTIMERAPCROUTINE pfnCompletionRoutine,
  3793.     LPVOID lpArgToCompletionRoutine,
  3794.     BOOL fResume
  3795.     );
  3796.  
  3797. WINBASEAPI
  3798. BOOL
  3799. WINAPI
  3800. CancelWaitableTimer(
  3801.     HANDLE hTimer
  3802.     );
  3803. #endif /* _WIN32_WINNT >= 0x0400 */
  3804.  
  3805. WINBASEAPI
  3806. HANDLE
  3807. WINAPI
  3808. CreateFileMappingA(
  3809.     HANDLE hFile,
  3810.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  3811.     DWORD flProtect,
  3812.     DWORD dwMaximumSizeHigh,
  3813.     DWORD dwMaximumSizeLow,
  3814.     LPCSTR lpName
  3815.     );
  3816. WINBASEAPI
  3817. HANDLE
  3818. WINAPI
  3819. CreateFileMappingW(
  3820.     HANDLE hFile,
  3821.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  3822.     DWORD flProtect,
  3823.     DWORD dwMaximumSizeHigh,
  3824.     DWORD dwMaximumSizeLow,
  3825.     LPCWSTR lpName
  3826.     );
  3827. #ifdef UNICODE
  3828. #define CreateFileMapping  CreateFileMappingW
  3829. #else
  3830. #define CreateFileMapping  CreateFileMappingA
  3831. #endif // !UNICODE
  3832.  
  3833. WINBASEAPI
  3834. HANDLE
  3835. WINAPI
  3836. OpenFileMappingA(
  3837.     DWORD dwDesiredAccess,
  3838.     BOOL bInheritHandle,
  3839.     LPCSTR lpName
  3840.     );
  3841. WINBASEAPI
  3842. HANDLE
  3843. WINAPI
  3844. OpenFileMappingW(
  3845.     DWORD dwDesiredAccess,
  3846.     BOOL bInheritHandle,
  3847.     LPCWSTR lpName
  3848.     );
  3849. #ifdef UNICODE
  3850. #define OpenFileMapping  OpenFileMappingW
  3851. #else
  3852. #define OpenFileMapping  OpenFileMappingA
  3853. #endif // !UNICODE
  3854.  
  3855. WINBASEAPI
  3856. DWORD
  3857. WINAPI
  3858. GetLogicalDriveStringsA(
  3859.     DWORD nBufferLength,
  3860.     LPSTR lpBuffer
  3861.     );
  3862. WINBASEAPI
  3863. DWORD
  3864. WINAPI
  3865. GetLogicalDriveStringsW(
  3866.     DWORD nBufferLength,
  3867.     LPWSTR lpBuffer
  3868.     );
  3869. #ifdef UNICODE
  3870. #define GetLogicalDriveStrings  GetLogicalDriveStringsW
  3871. #else
  3872. #define GetLogicalDriveStrings  GetLogicalDriveStringsA
  3873. #endif // !UNICODE
  3874.  
  3875. WINBASEAPI
  3876. HMODULE
  3877. WINAPI
  3878. LoadLibraryA(
  3879.     LPCSTR lpLibFileName
  3880.     );
  3881. WINBASEAPI
  3882. HMODULE
  3883. WINAPI
  3884. LoadLibraryW(
  3885.     LPCWSTR lpLibFileName
  3886.     );
  3887. #ifdef UNICODE
  3888. #define LoadLibrary  LoadLibraryW
  3889. #else
  3890. #define LoadLibrary  LoadLibraryA
  3891. #endif // !UNICODE
  3892.  
  3893. WINBASEAPI
  3894. HMODULE
  3895. WINAPI
  3896. LoadLibraryExA(
  3897.     LPCSTR lpLibFileName,
  3898.     HANDLE hFile,
  3899.     DWORD dwFlags
  3900.     );
  3901. WINBASEAPI
  3902. HMODULE
  3903. WINAPI
  3904. LoadLibraryExW(
  3905.     LPCWSTR lpLibFileName,
  3906.     HANDLE hFile,
  3907.     DWORD dwFlags
  3908.     );
  3909. #ifdef UNICODE
  3910. #define LoadLibraryEx  LoadLibraryExW
  3911. #else
  3912. #define LoadLibraryEx  LoadLibraryExA
  3913. #endif // !UNICODE
  3914.  
  3915.  
  3916. #define DONT_RESOLVE_DLL_REFERENCES     0x00000001
  3917. #define LOAD_LIBRARY_AS_DATAFILE        0x00000002
  3918. #define LOAD_WITH_ALTERED_SEARCH_PATH   0x00000008
  3919.  
  3920.  
  3921. WINBASEAPI
  3922. DWORD
  3923. WINAPI
  3924. GetModuleFileNameA(
  3925.     HMODULE hModule,
  3926.     LPSTR lpFilename,
  3927.     DWORD nSize
  3928.     );
  3929. WINBASEAPI
  3930. DWORD
  3931. WINAPI
  3932. GetModuleFileNameW(
  3933.     HMODULE hModule,
  3934.     LPWSTR lpFilename,
  3935.     DWORD nSize
  3936.     );
  3937. #ifdef UNICODE
  3938. #define GetModuleFileName  GetModuleFileNameW
  3939. #else
  3940. #define GetModuleFileName  GetModuleFileNameA
  3941. #endif // !UNICODE
  3942.  
  3943. WINBASEAPI
  3944. HMODULE
  3945. WINAPI
  3946. GetModuleHandleA(
  3947.     LPCSTR lpModuleName
  3948.     );
  3949. WINBASEAPI
  3950. HMODULE
  3951. WINAPI
  3952. GetModuleHandleW(
  3953.     LPCWSTR lpModuleName
  3954.     );
  3955. #ifdef UNICODE
  3956. #define GetModuleHandle  GetModuleHandleW
  3957. #else
  3958. #define GetModuleHandle  GetModuleHandleA
  3959. #endif // !UNICODE
  3960.  
  3961. WINBASEAPI
  3962. BOOL
  3963. WINAPI
  3964. CreateProcessA(
  3965.     LPCSTR lpApplicationName,
  3966.     LPSTR lpCommandLine,
  3967.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  3968.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  3969.     BOOL bInheritHandles,
  3970.     DWORD dwCreationFlags,
  3971.     LPVOID lpEnvironment,
  3972.     LPCSTR lpCurrentDirectory,
  3973.     LPSTARTUPINFOA lpStartupInfo,
  3974.     LPPROCESS_INFORMATION lpProcessInformation
  3975.     );
  3976. WINBASEAPI
  3977. BOOL
  3978. WINAPI
  3979. CreateProcessW(
  3980.     LPCWSTR lpApplicationName,
  3981.     LPWSTR lpCommandLine,
  3982.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  3983.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  3984.     BOOL bInheritHandles,
  3985.     DWORD dwCreationFlags,
  3986.     LPVOID lpEnvironment,
  3987.     LPCWSTR lpCurrentDirectory,
  3988.     LPSTARTUPINFOW lpStartupInfo,
  3989.     LPPROCESS_INFORMATION lpProcessInformation
  3990.     );
  3991. #ifdef UNICODE
  3992. #define CreateProcess  CreateProcessW
  3993. #else
  3994. #define CreateProcess  CreateProcessA
  3995. #endif // !UNICODE
  3996.  
  3997. WINBASEAPI
  3998. BOOL
  3999. WINAPI
  4000. SetProcessShutdownParameters(
  4001.     DWORD dwLevel,
  4002.     DWORD dwFlags
  4003.     );
  4004.  
  4005. WINBASEAPI
  4006. BOOL
  4007. WINAPI
  4008. GetProcessShutdownParameters(
  4009.     LPDWORD lpdwLevel,
  4010.     LPDWORD lpdwFlags
  4011.     );
  4012.  
  4013. WINBASEAPI
  4014. DWORD
  4015. WINAPI
  4016. GetProcessVersion(
  4017.     DWORD ProcessId
  4018.     );
  4019.  
  4020. WINBASEAPI
  4021. VOID
  4022. WINAPI
  4023. FatalAppExitA(
  4024.     UINT uAction,
  4025.     LPCSTR lpMessageText
  4026.     );
  4027. WINBASEAPI
  4028. VOID
  4029. WINAPI
  4030. FatalAppExitW(
  4031.     UINT uAction,
  4032.     LPCWSTR lpMessageText
  4033.     );
  4034. #ifdef UNICODE
  4035. #define FatalAppExit  FatalAppExitW
  4036. #else
  4037. #define FatalAppExit  FatalAppExitA
  4038. #endif // !UNICODE
  4039.  
  4040. WINBASEAPI
  4041. VOID
  4042. WINAPI
  4043. GetStartupInfoA(
  4044.     LPSTARTUPINFOA lpStartupInfo
  4045.     );
  4046. WINBASEAPI
  4047. VOID
  4048. WINAPI
  4049. GetStartupInfoW(
  4050.     LPSTARTUPINFOW lpStartupInfo
  4051.     );
  4052. #ifdef UNICODE
  4053. #define GetStartupInfo  GetStartupInfoW
  4054. #else
  4055. #define GetStartupInfo  GetStartupInfoA
  4056. #endif // !UNICODE
  4057.  
  4058. WINBASEAPI
  4059. LPSTR
  4060. WINAPI
  4061. GetCommandLineA(
  4062.     VOID
  4063.     );
  4064. WINBASEAPI
  4065. LPWSTR
  4066. WINAPI
  4067. GetCommandLineW(
  4068.     VOID
  4069.     );
  4070. #ifdef UNICODE
  4071. #define GetCommandLine  GetCommandLineW
  4072. #else
  4073. #define GetCommandLine  GetCommandLineA
  4074. #endif // !UNICODE
  4075.  
  4076. WINBASEAPI
  4077. DWORD
  4078. WINAPI
  4079. GetEnvironmentVariableA(
  4080.     LPCSTR lpName,
  4081.     LPSTR lpBuffer,
  4082.     DWORD nSize
  4083.     );
  4084. WINBASEAPI
  4085. DWORD
  4086. WINAPI
  4087. GetEnvironmentVariableW(
  4088.     LPCWSTR lpName,
  4089.     LPWSTR lpBuffer,
  4090.     DWORD nSize
  4091.     );
  4092. #ifdef UNICODE
  4093. #define GetEnvironmentVariable  GetEnvironmentVariableW
  4094. #else
  4095. #define GetEnvironmentVariable  GetEnvironmentVariableA
  4096. #endif // !UNICODE
  4097.  
  4098. WINBASEAPI
  4099. BOOL
  4100. WINAPI
  4101. SetEnvironmentVariableA(
  4102.     LPCSTR lpName,
  4103.     LPCSTR lpValue
  4104.     );
  4105. WINBASEAPI
  4106. BOOL
  4107. WINAPI
  4108. SetEnvironmentVariableW(
  4109.     LPCWSTR lpName,
  4110.     LPCWSTR lpValue
  4111.     );
  4112. #ifdef UNICODE
  4113. #define SetEnvironmentVariable  SetEnvironmentVariableW
  4114. #else
  4115. #define SetEnvironmentVariable  SetEnvironmentVariableA
  4116. #endif // !UNICODE
  4117.  
  4118. WINBASEAPI
  4119. DWORD
  4120. WINAPI
  4121. ExpandEnvironmentStringsA(
  4122.     LPCSTR lpSrc,
  4123.     LPSTR lpDst,
  4124.     DWORD nSize
  4125.     );
  4126. WINBASEAPI
  4127. DWORD
  4128. WINAPI
  4129. ExpandEnvironmentStringsW(
  4130.     LPCWSTR lpSrc,
  4131.     LPWSTR lpDst,
  4132.     DWORD nSize
  4133.     );
  4134. #ifdef UNICODE
  4135. #define ExpandEnvironmentStrings  ExpandEnvironmentStringsW
  4136. #else
  4137. #define ExpandEnvironmentStrings  ExpandEnvironmentStringsA
  4138. #endif // !UNICODE
  4139.  
  4140. WINBASEAPI
  4141. VOID
  4142. WINAPI
  4143. OutputDebugStringA(
  4144.     LPCSTR lpOutputString
  4145.     );
  4146. WINBASEAPI
  4147. VOID
  4148. WINAPI
  4149. OutputDebugStringW(
  4150.     LPCWSTR lpOutputString
  4151.     );
  4152. #ifdef UNICODE
  4153. #define OutputDebugString  OutputDebugStringW
  4154. #else
  4155. #define OutputDebugString  OutputDebugStringA
  4156. #endif // !UNICODE
  4157.  
  4158. WINBASEAPI
  4159. HRSRC
  4160. WINAPI
  4161. FindResourceA(
  4162.     HMODULE hModule,
  4163.     LPCSTR lpName,
  4164.     LPCSTR lpType
  4165.     );
  4166. WINBASEAPI
  4167. HRSRC
  4168. WINAPI
  4169. FindResourceW(
  4170.     HMODULE hModule,
  4171.     LPCWSTR lpName,
  4172.     LPCWSTR lpType
  4173.     );
  4174. #ifdef UNICODE
  4175. #define FindResource  FindResourceW
  4176. #else
  4177. #define FindResource  FindResourceA
  4178. #endif // !UNICODE
  4179.  
  4180. WINBASEAPI
  4181. HRSRC
  4182. WINAPI
  4183. FindResourceExA(
  4184.     HMODULE hModule,
  4185.     LPCSTR lpType,
  4186.     LPCSTR lpName,
  4187.     WORD    wLanguage
  4188.     );
  4189. WINBASEAPI
  4190. HRSRC
  4191. WINAPI
  4192. FindResourceExW(
  4193.     HMODULE hModule,
  4194.     LPCWSTR lpType,
  4195.     LPCWSTR lpName,
  4196.     WORD    wLanguage
  4197.     );
  4198. #ifdef UNICODE
  4199. #define FindResourceEx  FindResourceExW
  4200. #else
  4201. #define FindResourceEx  FindResourceExA
  4202. #endif // !UNICODE
  4203.  
  4204. #ifdef STRICT
  4205. typedef BOOL (CALLBACK* ENUMRESTYPEPROC)(HMODULE hModule, LPTSTR lpType,
  4206.         LONG lParam);
  4207. typedef BOOL (CALLBACK* ENUMRESNAMEPROC)(HMODULE hModule, LPCTSTR lpType,
  4208.         LPTSTR lpName, LONG lParam);
  4209. typedef BOOL (CALLBACK* ENUMRESLANGPROC)(HMODULE hModule, LPCTSTR lpType,
  4210.         LPCTSTR lpName, WORD  wLanguage, LONG lParam);
  4211. #else
  4212. typedef FARPROC ENUMRESTYPEPROC;
  4213. typedef FARPROC ENUMRESNAMEPROC;
  4214. typedef FARPROC ENUMRESLANGPROC;
  4215. #endif
  4216.  
  4217. WINBASEAPI
  4218. BOOL
  4219. WINAPI
  4220. EnumResourceTypesA(
  4221.     HMODULE hModule,
  4222.     ENUMRESTYPEPROC lpEnumFunc,
  4223.     LONG lParam
  4224.     );
  4225. WINBASEAPI
  4226. BOOL
  4227. WINAPI
  4228. EnumResourceTypesW(
  4229.     HMODULE hModule,
  4230.     ENUMRESTYPEPROC lpEnumFunc,
  4231.     LONG lParam
  4232.     );
  4233. #ifdef UNICODE
  4234. #define EnumResourceTypes  EnumResourceTypesW
  4235. #else
  4236. #define EnumResourceTypes  EnumResourceTypesA
  4237. #endif // !UNICODE
  4238.  
  4239.  
  4240. WINBASEAPI
  4241. BOOL
  4242. WINAPI
  4243. EnumResourceNamesA(
  4244.     HMODULE hModule,
  4245.     LPCSTR lpType,
  4246.     ENUMRESNAMEPROC lpEnumFunc,
  4247.     LONG lParam
  4248.     );
  4249. WINBASEAPI
  4250. BOOL
  4251. WINAPI
  4252. EnumResourceNamesW(
  4253.     HMODULE hModule,
  4254.     LPCWSTR lpType,
  4255.     ENUMRESNAMEPROC lpEnumFunc,
  4256.     LONG lParam
  4257.     );
  4258. #ifdef UNICODE
  4259. #define EnumResourceNames  EnumResourceNamesW
  4260. #else
  4261. #define EnumResourceNames  EnumResourceNamesA
  4262. #endif // !UNICODE
  4263.  
  4264. WINBASEAPI
  4265. BOOL
  4266. WINAPI
  4267. EnumResourceLanguagesA(
  4268.     HMODULE hModule,
  4269.     LPCSTR lpType,
  4270.     LPCSTR lpName,
  4271.     ENUMRESLANGPROC lpEnumFunc,
  4272.     LONG lParam
  4273.     );
  4274. WINBASEAPI
  4275. BOOL
  4276. WINAPI
  4277. EnumResourceLanguagesW(
  4278.     HMODULE hModule,
  4279.     LPCWSTR lpType,
  4280.     LPCWSTR lpName,
  4281.     ENUMRESLANGPROC lpEnumFunc,
  4282.     LONG lParam
  4283.     );
  4284. #ifdef UNICODE
  4285. #define EnumResourceLanguages  EnumResourceLanguagesW
  4286. #else
  4287. #define EnumResourceLanguages  EnumResourceLanguagesA
  4288. #endif // !UNICODE
  4289.  
  4290. WINBASEAPI
  4291. HANDLE
  4292. WINAPI
  4293. BeginUpdateResourceA(
  4294.     LPCSTR pFileName,
  4295.     BOOL bDeleteExistingResources
  4296.     );
  4297. WINBASEAPI
  4298. HANDLE
  4299. WINAPI
  4300. BeginUpdateResourceW(
  4301.     LPCWSTR pFileName,
  4302.     BOOL bDeleteExistingResources
  4303.     );
  4304. #ifdef UNICODE
  4305. #define BeginUpdateResource  BeginUpdateResourceW
  4306. #else
  4307. #define BeginUpdateResource  BeginUpdateResourceA
  4308. #endif // !UNICODE
  4309.  
  4310. WINBASEAPI
  4311. BOOL
  4312. WINAPI
  4313. UpdateResourceA(
  4314.     HANDLE      hUpdate,
  4315.     LPCSTR     lpType,
  4316.     LPCSTR     lpName,
  4317.     WORD        wLanguage,
  4318.     LPVOID      lpData,
  4319.     DWORD       cbData
  4320.     );
  4321. WINBASEAPI
  4322. BOOL
  4323. WINAPI
  4324. UpdateResourceW(
  4325.     HANDLE      hUpdate,
  4326.     LPCWSTR     lpType,
  4327.     LPCWSTR     lpName,
  4328.     WORD        wLanguage,
  4329.     LPVOID      lpData,
  4330.     DWORD       cbData
  4331.     );
  4332. #ifdef UNICODE
  4333. #define UpdateResource  UpdateResourceW
  4334. #else
  4335. #define UpdateResource  UpdateResourceA
  4336. #endif // !UNICODE
  4337.  
  4338. WINBASEAPI
  4339. BOOL
  4340. WINAPI
  4341. EndUpdateResourceA(
  4342.     HANDLE      hUpdate,
  4343.     BOOL        fDiscard
  4344.     );
  4345. WINBASEAPI
  4346. BOOL
  4347. WINAPI
  4348. EndUpdateResourceW(
  4349.     HANDLE      hUpdate,
  4350.     BOOL        fDiscard
  4351.     );
  4352. #ifdef UNICODE
  4353. #define EndUpdateResource  EndUpdateResourceW
  4354. #else
  4355. #define EndUpdateResource  EndUpdateResourceA
  4356. #endif // !UNICODE
  4357.  
  4358. WINBASEAPI
  4359. ATOM
  4360. WINAPI
  4361. GlobalAddAtomA(
  4362.     LPCSTR lpString
  4363.     );
  4364. WINBASEAPI
  4365. ATOM
  4366. WINAPI
  4367. GlobalAddAtomW(
  4368.     LPCWSTR lpString
  4369.     );
  4370. #ifdef UNICODE
  4371. #define GlobalAddAtom  GlobalAddAtomW
  4372. #else
  4373. #define GlobalAddAtom  GlobalAddAtomA
  4374. #endif // !UNICODE
  4375.  
  4376. WINBASEAPI
  4377. ATOM
  4378. WINAPI
  4379. GlobalFindAtomA(
  4380.     LPCSTR lpString
  4381.     );
  4382. WINBASEAPI
  4383. ATOM
  4384. WINAPI
  4385. GlobalFindAtomW(
  4386.     LPCWSTR lpString
  4387.     );
  4388. #ifdef UNICODE
  4389. #define GlobalFindAtom  GlobalFindAtomW
  4390. #else
  4391. #define GlobalFindAtom  GlobalFindAtomA
  4392. #endif // !UNICODE
  4393.  
  4394. WINBASEAPI
  4395. UINT
  4396. WINAPI
  4397. GlobalGetAtomNameA(
  4398.     ATOM nAtom,
  4399.     LPSTR lpBuffer,
  4400.     int nSize
  4401.     );
  4402. WINBASEAPI
  4403. UINT
  4404. WINAPI
  4405. GlobalGetAtomNameW(
  4406.     ATOM nAtom,
  4407.     LPWSTR lpBuffer,
  4408.     int nSize
  4409.     );
  4410. #ifdef UNICODE
  4411. #define GlobalGetAtomName  GlobalGetAtomNameW
  4412. #else
  4413. #define GlobalGetAtomName  GlobalGetAtomNameA
  4414. #endif // !UNICODE
  4415.  
  4416. WINBASEAPI
  4417. ATOM
  4418. WINAPI
  4419. AddAtomA(
  4420.     LPCSTR lpString
  4421.     );
  4422. WINBASEAPI
  4423. ATOM
  4424. WINAPI
  4425. AddAtomW(
  4426.     LPCWSTR lpString
  4427.     );
  4428. #ifdef UNICODE
  4429. #define AddAtom  AddAtomW
  4430. #else
  4431. #define AddAtom  AddAtomA
  4432. #endif // !UNICODE
  4433.  
  4434. WINBASEAPI
  4435. ATOM
  4436. WINAPI
  4437. FindAtomA(
  4438.     LPCSTR lpString
  4439.     );
  4440. WINBASEAPI
  4441. ATOM
  4442. WINAPI
  4443. FindAtomW(
  4444.     LPCWSTR lpString
  4445.     );
  4446. #ifdef UNICODE
  4447. #define FindAtom  FindAtomW
  4448. #else
  4449. #define FindAtom  FindAtomA
  4450. #endif // !UNICODE
  4451.  
  4452. WINBASEAPI
  4453. UINT
  4454. WINAPI
  4455. GetAtomNameA(
  4456.     ATOM nAtom,
  4457.     LPSTR lpBuffer,
  4458.     int nSize
  4459.     );
  4460. WINBASEAPI
  4461. UINT
  4462. WINAPI
  4463. GetAtomNameW(
  4464.     ATOM nAtom,
  4465.     LPWSTR lpBuffer,
  4466.     int nSize
  4467.     );
  4468. #ifdef UNICODE
  4469. #define GetAtomName  GetAtomNameW
  4470. #else
  4471. #define GetAtomName  GetAtomNameA
  4472. #endif // !UNICODE
  4473.  
  4474. WINBASEAPI
  4475. UINT
  4476. WINAPI
  4477. GetProfileIntA(
  4478.     LPCSTR lpAppName,
  4479.     LPCSTR lpKeyName,
  4480.     INT nDefault
  4481.     );
  4482. WINBASEAPI
  4483. UINT
  4484. WINAPI
  4485. GetProfileIntW(
  4486.     LPCWSTR lpAppName,
  4487.     LPCWSTR lpKeyName,
  4488.     INT nDefault
  4489.     );
  4490. #ifdef UNICODE
  4491. #define GetProfileInt  GetProfileIntW
  4492. #else
  4493. #define GetProfileInt  GetProfileIntA
  4494. #endif // !UNICODE
  4495.  
  4496. WINBASEAPI
  4497. DWORD
  4498. WINAPI
  4499. GetProfileStringA(
  4500.     LPCSTR lpAppName,
  4501.     LPCSTR lpKeyName,
  4502.     LPCSTR lpDefault,
  4503.     LPSTR lpReturnedString,
  4504.     DWORD nSize
  4505.     );
  4506. WINBASEAPI
  4507. DWORD
  4508. WINAPI
  4509. GetProfileStringW(
  4510.     LPCWSTR lpAppName,
  4511.     LPCWSTR lpKeyName,
  4512.     LPCWSTR lpDefault,
  4513.     LPWSTR lpReturnedString,
  4514.     DWORD nSize
  4515.     );
  4516. #ifdef UNICODE
  4517. #define GetProfileString  GetProfileStringW
  4518. #else
  4519. #define GetProfileString  GetProfileStringA
  4520. #endif // !UNICODE
  4521.  
  4522. WINBASEAPI
  4523. BOOL
  4524. WINAPI
  4525. WriteProfileStringA(
  4526.     LPCSTR lpAppName,
  4527.     LPCSTR lpKeyName,
  4528.     LPCSTR lpString
  4529.     );
  4530. WINBASEAPI
  4531. BOOL
  4532. WINAPI
  4533. WriteProfileStringW(
  4534.     LPCWSTR lpAppName,
  4535.     LPCWSTR lpKeyName,
  4536.     LPCWSTR lpString
  4537.     );
  4538. #ifdef UNICODE
  4539. #define WriteProfileString  WriteProfileStringW
  4540. #else
  4541. #define WriteProfileString  WriteProfileStringA
  4542. #endif // !UNICODE
  4543.  
  4544. WINBASEAPI
  4545. DWORD
  4546. WINAPI
  4547. GetProfileSectionA(
  4548.     LPCSTR lpAppName,
  4549.     LPSTR lpReturnedString,
  4550.     DWORD nSize
  4551.     );
  4552. WINBASEAPI
  4553. DWORD
  4554. WINAPI
  4555. GetProfileSectionW(
  4556.     LPCWSTR lpAppName,
  4557.     LPWSTR lpReturnedString,
  4558.     DWORD nSize
  4559.     );
  4560. #ifdef UNICODE
  4561. #define GetProfileSection  GetProfileSectionW
  4562. #else
  4563. #define GetProfileSection  GetProfileSectionA
  4564. #endif // !UNICODE
  4565.  
  4566. WINBASEAPI
  4567. BOOL
  4568. WINAPI
  4569. WriteProfileSectionA(
  4570.     LPCSTR lpAppName,
  4571.     LPCSTR lpString
  4572.     );
  4573. WINBASEAPI
  4574. BOOL
  4575. WINAPI
  4576. WriteProfileSectionW(
  4577.     LPCWSTR lpAppName,
  4578.     LPCWSTR lpString
  4579.     );
  4580. #ifdef UNICODE
  4581. #define WriteProfileSection  WriteProfileSectionW
  4582. #else
  4583. #define WriteProfileSection  WriteProfileSectionA
  4584. #endif // !UNICODE
  4585.  
  4586. WINBASEAPI
  4587. UINT
  4588. WINAPI
  4589. GetPrivateProfileIntA(
  4590.     LPCSTR lpAppName,
  4591.     LPCSTR lpKeyName,
  4592.     INT nDefault,
  4593.     LPCSTR lpFileName
  4594.     );
  4595. WINBASEAPI
  4596. UINT
  4597. WINAPI
  4598. GetPrivateProfileIntW(
  4599.     LPCWSTR lpAppName,
  4600.     LPCWSTR lpKeyName,
  4601.     INT nDefault,
  4602.     LPCWSTR lpFileName
  4603.     );
  4604. #ifdef UNICODE
  4605. #define GetPrivateProfileInt  GetPrivateProfileIntW
  4606. #else
  4607. #define GetPrivateProfileInt  GetPrivateProfileIntA
  4608. #endif // !UNICODE
  4609.  
  4610. WINBASEAPI
  4611. DWORD
  4612. WINAPI
  4613. GetPrivateProfileStringA(
  4614.     LPCSTR lpAppName,
  4615.     LPCSTR lpKeyName,
  4616.     LPCSTR lpDefault,
  4617.     LPSTR lpReturnedString,
  4618.     DWORD nSize,
  4619.     LPCSTR lpFileName
  4620.     );
  4621. WINBASEAPI
  4622. DWORD
  4623. WINAPI
  4624. GetPrivateProfileStringW(
  4625.     LPCWSTR lpAppName,
  4626.     LPCWSTR lpKeyName,
  4627.     LPCWSTR lpDefault,
  4628.     LPWSTR lpReturnedString,
  4629.     DWORD nSize,
  4630.     LPCWSTR lpFileName
  4631.     );
  4632. #ifdef UNICODE
  4633. #define GetPrivateProfileString  GetPrivateProfileStringW
  4634. #else
  4635. #define GetPrivateProfileString  GetPrivateProfileStringA
  4636. #endif // !UNICODE
  4637.  
  4638. WINBASEAPI
  4639. BOOL
  4640. WINAPI
  4641. WritePrivateProfileStringA(
  4642.     LPCSTR lpAppName,
  4643.     LPCSTR lpKeyName,
  4644.     LPCSTR lpString,
  4645.     LPCSTR lpFileName
  4646.     );
  4647. WINBASEAPI
  4648. BOOL
  4649. WINAPI
  4650. WritePrivateProfileStringW(
  4651.     LPCWSTR lpAppName,
  4652.     LPCWSTR lpKeyName,
  4653.     LPCWSTR lpString,
  4654.     LPCWSTR lpFileName
  4655.     );
  4656. #ifdef UNICODE
  4657. #define WritePrivateProfileString  WritePrivateProfileStringW
  4658. #else
  4659. #define WritePrivateProfileString  WritePrivateProfileStringA
  4660. #endif // !UNICODE
  4661.  
  4662. WINBASEAPI
  4663. DWORD
  4664. WINAPI
  4665. GetPrivateProfileSectionA(
  4666.     LPCSTR lpAppName,
  4667.     LPSTR lpReturnedString,
  4668.     DWORD nSize,
  4669.     LPCSTR lpFileName
  4670.     );
  4671. WINBASEAPI
  4672. DWORD
  4673. WINAPI
  4674. GetPrivateProfileSectionW(
  4675.     LPCWSTR lpAppName,
  4676.     LPWSTR lpReturnedString,
  4677.     DWORD nSize,
  4678.     LPCWSTR lpFileName
  4679.     );
  4680. #ifdef UNICODE
  4681. #define GetPrivateProfileSection  GetPrivateProfileSectionW
  4682. #else
  4683. #define GetPrivateProfileSection  GetPrivateProfileSectionA
  4684. #endif // !UNICODE
  4685.  
  4686. WINBASEAPI
  4687. BOOL
  4688. WINAPI
  4689. WritePrivateProfileSectionA(
  4690.     LPCSTR lpAppName,
  4691.     LPCSTR lpString,
  4692.     LPCSTR lpFileName
  4693.     );
  4694. WINBASEAPI
  4695. BOOL
  4696. WINAPI
  4697. WritePrivateProfileSectionW(
  4698.     LPCWSTR lpAppName,
  4699.     LPCWSTR lpString,
  4700.     LPCWSTR lpFileName
  4701.     );
  4702. #ifdef UNICODE
  4703. #define WritePrivateProfileSection  WritePrivateProfileSectionW
  4704. #else
  4705. #define WritePrivateProfileSection  WritePrivateProfileSectionA
  4706. #endif // !UNICODE
  4707.  
  4708.  
  4709. WINBASEAPI
  4710. DWORD
  4711. WINAPI
  4712. GetPrivateProfileSectionNamesA(
  4713.     LPSTR lpszReturnBuffer,
  4714.     DWORD nSize,
  4715.     LPCSTR lpFileName
  4716.     );
  4717. WINBASEAPI
  4718. DWORD
  4719. WINAPI
  4720. GetPrivateProfileSectionNamesW(
  4721.     LPWSTR lpszReturnBuffer,
  4722.     DWORD nSize,
  4723.     LPCWSTR lpFileName
  4724.     );
  4725. #ifdef UNICODE
  4726. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesW
  4727. #else
  4728. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesA
  4729. #endif // !UNICODE
  4730.  
  4731. WINBASEAPI
  4732. BOOL
  4733. WINAPI
  4734. GetPrivateProfileStructA(
  4735.     LPCSTR lpszSection,
  4736.     LPCSTR lpszKey,
  4737.     LPVOID   lpStruct,
  4738.     UINT     uSizeStruct,
  4739.     LPCSTR szFile
  4740.     );
  4741. WINBASEAPI
  4742. BOOL
  4743. WINAPI
  4744. GetPrivateProfileStructW(
  4745.     LPCWSTR lpszSection,
  4746.     LPCWSTR lpszKey,
  4747.     LPVOID   lpStruct,
  4748.     UINT     uSizeStruct,
  4749.     LPCWSTR szFile
  4750.     );
  4751. #ifdef UNICODE
  4752. #define GetPrivateProfileStruct  GetPrivateProfileStructW
  4753. #else
  4754. #define GetPrivateProfileStruct  GetPrivateProfileStructA
  4755. #endif // !UNICODE
  4756.  
  4757. WINBASEAPI
  4758. BOOL
  4759. WINAPI
  4760. WritePrivateProfileStructA(
  4761.     LPCSTR lpszSection,
  4762.     LPCSTR lpszKey,
  4763.     LPVOID   lpStruct,
  4764.     UINT     uSizeStruct,
  4765.     LPCSTR szFile
  4766.     );
  4767. WINBASEAPI
  4768. BOOL
  4769. WINAPI
  4770. WritePrivateProfileStructW(
  4771.     LPCWSTR lpszSection,
  4772.     LPCWSTR lpszKey,
  4773.     LPVOID   lpStruct,
  4774.     UINT     uSizeStruct,
  4775.     LPCWSTR szFile
  4776.     );
  4777. #ifdef UNICODE
  4778. #define WritePrivateProfileStruct  WritePrivateProfileStructW
  4779. #else
  4780. #define WritePrivateProfileStruct  WritePrivateProfileStructA
  4781. #endif // !UNICODE
  4782.  
  4783.  
  4784. WINBASEAPI
  4785. UINT
  4786. WINAPI
  4787. GetDriveTypeA(
  4788.     LPCSTR lpRootPathName
  4789.     );
  4790. WINBASEAPI
  4791. UINT
  4792. WINAPI
  4793. GetDriveTypeW(
  4794.     LPCWSTR lpRootPathName
  4795.     );
  4796. #ifdef UNICODE
  4797. #define GetDriveType  GetDriveTypeW
  4798. #else
  4799. #define GetDriveType  GetDriveTypeA
  4800. #endif // !UNICODE
  4801.  
  4802. WINBASEAPI
  4803. UINT
  4804. WINAPI
  4805. GetSystemDirectoryA(
  4806.     LPSTR lpBuffer,
  4807.     UINT uSize
  4808.     );
  4809. WINBASEAPI
  4810. UINT
  4811. WINAPI
  4812. GetSystemDirectoryW(
  4813.     LPWSTR lpBuffer,
  4814.     UINT uSize
  4815.     );
  4816. #ifdef UNICODE
  4817. #define GetSystemDirectory  GetSystemDirectoryW
  4818. #else
  4819. #define GetSystemDirectory  GetSystemDirectoryA
  4820. #endif // !UNICODE
  4821.  
  4822. WINBASEAPI
  4823. DWORD
  4824. WINAPI
  4825. GetTempPathA(
  4826.     DWORD nBufferLength,
  4827.     LPSTR lpBuffer
  4828.     );
  4829. WINBASEAPI
  4830. DWORD
  4831. WINAPI
  4832. GetTempPathW(
  4833.     DWORD nBufferLength,
  4834.     LPWSTR lpBuffer
  4835.     );
  4836. #ifdef UNICODE
  4837. #define GetTempPath  GetTempPathW
  4838. #else
  4839. #define GetTempPath  GetTempPathA
  4840. #endif // !UNICODE
  4841.  
  4842. WINBASEAPI
  4843. UINT
  4844. WINAPI
  4845. GetTempFileNameA(
  4846.     LPCSTR lpPathName,
  4847.     LPCSTR lpPrefixString,
  4848.     UINT uUnique,
  4849.     LPSTR lpTempFileName
  4850.     );
  4851. WINBASEAPI
  4852. UINT
  4853. WINAPI
  4854. GetTempFileNameW(
  4855.     LPCWSTR lpPathName,
  4856.     LPCWSTR lpPrefixString,
  4857.     UINT uUnique,
  4858.     LPWSTR lpTempFileName
  4859.     );
  4860. #ifdef UNICODE
  4861. #define GetTempFileName  GetTempFileNameW
  4862. #else
  4863. #define GetTempFileName  GetTempFileNameA
  4864. #endif // !UNICODE
  4865.  
  4866. WINBASEAPI
  4867. UINT
  4868. WINAPI
  4869. GetWindowsDirectoryA(
  4870.     LPSTR lpBuffer,
  4871.     UINT uSize
  4872.     );
  4873. WINBASEAPI
  4874. UINT
  4875. WINAPI
  4876. GetWindowsDirectoryW(
  4877.     LPWSTR lpBuffer,
  4878.     UINT uSize
  4879.     );
  4880. #ifdef UNICODE
  4881. #define GetWindowsDirectory  GetWindowsDirectoryW
  4882. #else
  4883. #define GetWindowsDirectory  GetWindowsDirectoryA
  4884. #endif // !UNICODE
  4885.  
  4886. WINBASEAPI
  4887. BOOL
  4888. WINAPI
  4889. SetCurrentDirectoryA(
  4890.     LPCSTR lpPathName
  4891.     );
  4892. WINBASEAPI
  4893. BOOL
  4894. WINAPI
  4895. SetCurrentDirectoryW(
  4896.     LPCWSTR lpPathName
  4897.     );
  4898. #ifdef UNICODE
  4899. #define SetCurrentDirectory  SetCurrentDirectoryW
  4900. #else
  4901. #define SetCurrentDirectory  SetCurrentDirectoryA
  4902. #endif // !UNICODE
  4903.  
  4904. WINBASEAPI
  4905. DWORD
  4906. WINAPI
  4907. GetCurrentDirectoryA(
  4908.     DWORD nBufferLength,
  4909.     LPSTR lpBuffer
  4910.     );
  4911. WINBASEAPI
  4912. DWORD
  4913. WINAPI
  4914. GetCurrentDirectoryW(
  4915.     DWORD nBufferLength,
  4916.     LPWSTR lpBuffer
  4917.     );
  4918. #ifdef UNICODE
  4919. #define GetCurrentDirectory  GetCurrentDirectoryW
  4920. #else
  4921. #define GetCurrentDirectory  GetCurrentDirectoryA
  4922. #endif // !UNICODE
  4923.  
  4924. WINBASEAPI
  4925. BOOL
  4926. WINAPI
  4927. GetDiskFreeSpaceA(
  4928.     LPCSTR lpRootPathName,
  4929.     LPDWORD lpSectorsPerCluster,
  4930.     LPDWORD lpBytesPerSector,
  4931.     LPDWORD lpNumberOfFreeClusters,
  4932.     LPDWORD lpTotalNumberOfClusters
  4933.     );
  4934. WINBASEAPI
  4935. BOOL
  4936. WINAPI
  4937. GetDiskFreeSpaceW(
  4938.     LPCWSTR lpRootPathName,
  4939.     LPDWORD lpSectorsPerCluster,
  4940.     LPDWORD lpBytesPerSector,
  4941.     LPDWORD lpNumberOfFreeClusters,
  4942.     LPDWORD lpTotalNumberOfClusters
  4943.     );
  4944. #ifdef UNICODE
  4945. #define GetDiskFreeSpace  GetDiskFreeSpaceW
  4946. #else
  4947. #define GetDiskFreeSpace  GetDiskFreeSpaceA
  4948. #endif // !UNICODE
  4949.  
  4950. WINBASEAPI
  4951. BOOL
  4952. WINAPI
  4953. GetDiskFreeSpaceExA(
  4954.     LPCSTR lpDirectoryName,
  4955.     PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  4956.     PULARGE_INTEGER lpTotalNumberOfBytes,
  4957.     PULARGE_INTEGER lpTotalNumberOfFreeBytes
  4958.     );
  4959. WINBASEAPI
  4960. BOOL
  4961. WINAPI
  4962. GetDiskFreeSpaceExW(
  4963.     LPCWSTR lpDirectoryName,
  4964.     PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  4965.     PULARGE_INTEGER lpTotalNumberOfBytes,
  4966.     PULARGE_INTEGER lpTotalNumberOfFreeBytes
  4967.     );
  4968. #ifdef UNICODE
  4969. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExW
  4970. #else
  4971. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExA
  4972. #endif // !UNICODE
  4973.  
  4974. WINBASEAPI
  4975. BOOL
  4976. WINAPI
  4977. CreateDirectoryA(
  4978.     LPCSTR lpPathName,
  4979.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  4980.     );
  4981. WINBASEAPI
  4982. BOOL
  4983. WINAPI
  4984. CreateDirectoryW(
  4985.     LPCWSTR lpPathName,
  4986.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  4987.     );
  4988. #ifdef UNICODE
  4989. #define CreateDirectory  CreateDirectoryW
  4990. #else
  4991. #define CreateDirectory  CreateDirectoryA
  4992. #endif // !UNICODE
  4993.  
  4994. WINBASEAPI
  4995. BOOL
  4996. WINAPI
  4997. CreateDirectoryExA(
  4998.     LPCSTR lpTemplateDirectory,
  4999.     LPCSTR lpNewDirectory,
  5000.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5001.     );
  5002. WINBASEAPI
  5003. BOOL
  5004. WINAPI
  5005. CreateDirectoryExW(
  5006.     LPCWSTR lpTemplateDirectory,
  5007.     LPCWSTR lpNewDirectory,
  5008.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5009.     );
  5010. #ifdef UNICODE
  5011. #define CreateDirectoryEx  CreateDirectoryExW
  5012. #else
  5013. #define CreateDirectoryEx  CreateDirectoryExA
  5014. #endif // !UNICODE
  5015.  
  5016. WINBASEAPI
  5017. BOOL
  5018. WINAPI
  5019. RemoveDirectoryA(
  5020.     LPCSTR lpPathName
  5021.     );
  5022. WINBASEAPI
  5023. BOOL
  5024. WINAPI
  5025. RemoveDirectoryW(
  5026.     LPCWSTR lpPathName
  5027.     );
  5028. #ifdef UNICODE
  5029. #define RemoveDirectory  RemoveDirectoryW
  5030. #else
  5031. #define RemoveDirectory  RemoveDirectoryA
  5032. #endif // !UNICODE
  5033.  
  5034. WINBASEAPI
  5035. DWORD
  5036. WINAPI
  5037. GetFullPathNameA(
  5038.     LPCSTR lpFileName,
  5039.     DWORD nBufferLength,
  5040.     LPSTR lpBuffer,
  5041.     LPSTR *lpFilePart
  5042.     );
  5043. WINBASEAPI
  5044. DWORD
  5045. WINAPI
  5046. GetFullPathNameW(
  5047.     LPCWSTR lpFileName,
  5048.     DWORD nBufferLength,
  5049.     LPWSTR lpBuffer,
  5050.     LPWSTR *lpFilePart
  5051.     );
  5052. #ifdef UNICODE
  5053. #define GetFullPathName  GetFullPathNameW
  5054. #else
  5055. #define GetFullPathName  GetFullPathNameA
  5056. #endif // !UNICODE
  5057.  
  5058.  
  5059. #define DDD_RAW_TARGET_PATH         0x00000001
  5060. #define DDD_REMOVE_DEFINITION       0x00000002
  5061. #define DDD_EXACT_MATCH_ON_REMOVE   0x00000004
  5062. #define DDD_NO_BROADCAST_SYSTEM     0x00000008
  5063.  
  5064. WINBASEAPI
  5065. BOOL
  5066. WINAPI
  5067. DefineDosDeviceA(
  5068.     DWORD dwFlags,
  5069.     LPCSTR lpDeviceName,
  5070.     LPCSTR lpTargetPath
  5071.     );
  5072. WINBASEAPI
  5073. BOOL
  5074. WINAPI
  5075. DefineDosDeviceW(
  5076.     DWORD dwFlags,
  5077.     LPCWSTR lpDeviceName,
  5078.     LPCWSTR lpTargetPath
  5079.     );
  5080. #ifdef UNICODE
  5081. #define DefineDosDevice  DefineDosDeviceW
  5082. #else
  5083. #define DefineDosDevice  DefineDosDeviceA
  5084. #endif // !UNICODE
  5085.  
  5086. WINBASEAPI
  5087. DWORD
  5088. WINAPI
  5089. QueryDosDeviceA(
  5090.     LPCSTR lpDeviceName,
  5091.     LPSTR lpTargetPath,
  5092.     DWORD ucchMax
  5093.     );
  5094. WINBASEAPI
  5095. DWORD
  5096. WINAPI
  5097. QueryDosDeviceW(
  5098.     LPCWSTR lpDeviceName,
  5099.     LPWSTR lpTargetPath,
  5100.     DWORD ucchMax
  5101.     );
  5102. #ifdef UNICODE
  5103. #define QueryDosDevice  QueryDosDeviceW
  5104. #else
  5105. #define QueryDosDevice  QueryDosDeviceA
  5106. #endif // !UNICODE
  5107.  
  5108. #define EXPAND_LOCAL_DRIVES
  5109.  
  5110. WINBASEAPI
  5111. HANDLE
  5112. WINAPI
  5113. CreateFileA(
  5114.     LPCSTR lpFileName,
  5115.     DWORD dwDesiredAccess,
  5116.     DWORD dwShareMode,
  5117.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  5118.     DWORD dwCreationDisposition,
  5119.     DWORD dwFlagsAndAttributes,
  5120.     HANDLE hTemplateFile
  5121.     );
  5122. WINBASEAPI
  5123. HANDLE
  5124. WINAPI
  5125. CreateFileW(
  5126.     LPCWSTR lpFileName,
  5127.     DWORD dwDesiredAccess,
  5128.     DWORD dwShareMode,
  5129.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  5130.     DWORD dwCreationDisposition,
  5131.     DWORD dwFlagsAndAttributes,
  5132.     HANDLE hTemplateFile
  5133.     );
  5134. #ifdef UNICODE
  5135. #define CreateFile  CreateFileW
  5136. #else
  5137. #define CreateFile  CreateFileA
  5138. #endif // !UNICODE
  5139.  
  5140. WINBASEAPI
  5141. BOOL
  5142. WINAPI
  5143. SetFileAttributesA(
  5144.     LPCSTR lpFileName,
  5145.     DWORD dwFileAttributes
  5146.     );
  5147. WINBASEAPI
  5148. BOOL
  5149. WINAPI
  5150. SetFileAttributesW(
  5151.     LPCWSTR lpFileName,
  5152.     DWORD dwFileAttributes
  5153.     );
  5154. #ifdef UNICODE
  5155. #define SetFileAttributes  SetFileAttributesW
  5156. #else
  5157. #define SetFileAttributes  SetFileAttributesA
  5158. #endif // !UNICODE
  5159.  
  5160. WINBASEAPI
  5161. DWORD
  5162. WINAPI
  5163. GetFileAttributesA(
  5164.     LPCSTR lpFileName
  5165.     );
  5166. WINBASEAPI
  5167. DWORD
  5168. WINAPI
  5169. GetFileAttributesW(
  5170.     LPCWSTR lpFileName
  5171.     );
  5172. #ifdef UNICODE
  5173. #define GetFileAttributes  GetFileAttributesW
  5174. #else
  5175. #define GetFileAttributes  GetFileAttributesA
  5176. #endif // !UNICODE
  5177.  
  5178. typedef enum _GET_FILEEX_INFO_LEVELS {
  5179.     GetFileExInfoStandard,
  5180.     GetFileExMaxInfoLevel
  5181. } GET_FILEEX_INFO_LEVELS;
  5182.  
  5183. WINBASEAPI
  5184. BOOL
  5185. WINAPI
  5186. GetFileAttributesExA(
  5187.     LPCSTR lpFileName,
  5188.     GET_FILEEX_INFO_LEVELS fInfoLevelId,
  5189.     LPVOID lpFileInformation
  5190.     );
  5191. WINBASEAPI
  5192. BOOL
  5193. WINAPI
  5194. GetFileAttributesExW(
  5195.     LPCWSTR lpFileName,
  5196.     GET_FILEEX_INFO_LEVELS fInfoLevelId,
  5197.     LPVOID lpFileInformation
  5198.     );
  5199. #ifdef UNICODE
  5200. #define GetFileAttributesEx  GetFileAttributesExW
  5201. #else
  5202. #define GetFileAttributesEx  GetFileAttributesExA
  5203. #endif // !UNICODE
  5204.  
  5205. WINBASEAPI
  5206. DWORD
  5207. WINAPI
  5208. GetCompressedFileSizeA(
  5209.     LPCSTR lpFileName,
  5210.     LPDWORD lpFileSizeHigh
  5211.     );
  5212. WINBASEAPI
  5213. DWORD
  5214. WINAPI
  5215. GetCompressedFileSizeW(
  5216.     LPCWSTR lpFileName,
  5217.     LPDWORD lpFileSizeHigh
  5218.     );
  5219. #ifdef UNICODE
  5220. #define GetCompressedFileSize  GetCompressedFileSizeW
  5221. #else
  5222. #define GetCompressedFileSize  GetCompressedFileSizeA
  5223. #endif // !UNICODE
  5224.  
  5225. WINBASEAPI
  5226. BOOL
  5227. WINAPI
  5228. DeleteFileA(
  5229.     LPCSTR lpFileName
  5230.     );
  5231. WINBASEAPI
  5232. BOOL
  5233. WINAPI
  5234. DeleteFileW(
  5235.     LPCWSTR lpFileName
  5236.     );
  5237. #ifdef UNICODE
  5238. #define DeleteFile  DeleteFileW
  5239. #else
  5240. #define DeleteFile  DeleteFileA
  5241. #endif // !UNICODE
  5242.  
  5243. #if(_WIN32_WINNT >= 0x0400)
  5244. typedef enum _FINDEX_INFO_LEVELS {
  5245.     FindExInfoStandard,
  5246.     FindExInfoMaxInfoLevel
  5247. } FINDEX_INFO_LEVELS;
  5248.  
  5249. typedef enum _FINDEX_SEARCH_OPS {
  5250.     FindExSearchNameMatch,
  5251.     FindExSearchLimitToDirectories,
  5252.     FindExSearchLimitToDevices,
  5253.     FindExSearchMaxSearchOp
  5254. } FINDEX_SEARCH_OPS;
  5255.  
  5256. #define FIND_FIRST_EX_CASE_SENSITIVE   0x00000001
  5257.  
  5258. WINBASEAPI
  5259. HANDLE
  5260. WINAPI
  5261. FindFirstFileExA(
  5262.     LPCSTR lpFileName,
  5263.     FINDEX_INFO_LEVELS fInfoLevelId,
  5264.     LPVOID lpFindFileData,
  5265.     FINDEX_SEARCH_OPS fSearchOp,
  5266.     LPVOID lpSearchFilter,
  5267.     DWORD dwAdditionalFlags
  5268.     );
  5269. WINBASEAPI
  5270. HANDLE
  5271. WINAPI
  5272. FindFirstFileExW(
  5273.     LPCWSTR lpFileName,
  5274.     FINDEX_INFO_LEVELS fInfoLevelId,
  5275.     LPVOID lpFindFileData,
  5276.     FINDEX_SEARCH_OPS fSearchOp,
  5277.     LPVOID lpSearchFilter,
  5278.     DWORD dwAdditionalFlags
  5279.     );
  5280. #ifdef UNICODE
  5281. #define FindFirstFileEx  FindFirstFileExW
  5282. #else
  5283. #define FindFirstFileEx  FindFirstFileExA
  5284. #endif // !UNICODE
  5285. #endif /* _WIN32_WINNT >= 0x0400 */
  5286.  
  5287. WINBASEAPI
  5288. HANDLE
  5289. WINAPI
  5290. FindFirstFileA(
  5291.     LPCSTR lpFileName,
  5292.     LPWIN32_FIND_DATAA lpFindFileData
  5293.     );
  5294. WINBASEAPI
  5295. HANDLE
  5296. WINAPI
  5297. FindFirstFileW(
  5298.     LPCWSTR lpFileName,
  5299.     LPWIN32_FIND_DATAW lpFindFileData
  5300.     );
  5301. #ifdef UNICODE
  5302. #define FindFirstFile  FindFirstFileW
  5303. #else
  5304. #define FindFirstFile  FindFirstFileA
  5305. #endif // !UNICODE
  5306.  
  5307. WINBASEAPI
  5308. BOOL
  5309. WINAPI
  5310. FindNextFileA(
  5311.     HANDLE hFindFile,
  5312.     LPWIN32_FIND_DATAA lpFindFileData
  5313.     );
  5314. WINBASEAPI
  5315. BOOL
  5316. WINAPI
  5317. FindNextFileW(
  5318.     HANDLE hFindFile,
  5319.     LPWIN32_FIND_DATAW lpFindFileData
  5320.     );
  5321. #ifdef UNICODE
  5322. #define FindNextFile  FindNextFileW
  5323. #else
  5324. #define FindNextFile  FindNextFileA
  5325. #endif // !UNICODE
  5326.  
  5327. WINBASEAPI
  5328. DWORD
  5329. WINAPI
  5330. SearchPathA(
  5331.     LPCSTR lpPath,
  5332.     LPCSTR lpFileName,
  5333.     LPCSTR lpExtension,
  5334.     DWORD nBufferLength,
  5335.     LPSTR lpBuffer,
  5336.     LPSTR *lpFilePart
  5337.     );
  5338. WINBASEAPI
  5339. DWORD
  5340. WINAPI
  5341. SearchPathW(
  5342.     LPCWSTR lpPath,
  5343.     LPCWSTR lpFileName,
  5344.     LPCWSTR lpExtension,
  5345.     DWORD nBufferLength,
  5346.     LPWSTR lpBuffer,
  5347.     LPWSTR *lpFilePart
  5348.     );
  5349. #ifdef UNICODE
  5350. #define SearchPath  SearchPathW
  5351. #else
  5352. #define SearchPath  SearchPathA
  5353. #endif // !UNICODE
  5354.  
  5355. WINBASEAPI
  5356. BOOL
  5357. WINAPI
  5358. CopyFileA(
  5359.     LPCSTR lpExistingFileName,
  5360.     LPCSTR lpNewFileName,
  5361.     BOOL bFailIfExists
  5362.     );
  5363. WINBASEAPI
  5364. BOOL
  5365. WINAPI
  5366. CopyFileW(
  5367.     LPCWSTR lpExistingFileName,
  5368.     LPCWSTR lpNewFileName,
  5369.     BOOL bFailIfExists
  5370.     );
  5371. #ifdef UNICODE
  5372. #define CopyFile  CopyFileW
  5373. #else
  5374. #define CopyFile  CopyFileA
  5375. #endif // !UNICODE
  5376.  
  5377. #if(_WIN32_WINNT >= 0x0400)
  5378. typedef
  5379. DWORD
  5380. (WINAPI *LPPROGRESS_ROUTINE)(
  5381.     LARGE_INTEGER TotalFileSize,
  5382.     LARGE_INTEGER TotalBytesTransferred,
  5383.     LARGE_INTEGER StreamSize,
  5384.     LARGE_INTEGER StreamBytesTransferred,
  5385.     DWORD dwStreamNumber,
  5386.     DWORD dwCallbackReason,
  5387.     HANDLE hSourceFile,
  5388.     HANDLE hDestinationFile,
  5389.     LPVOID lpData OPTIONAL
  5390.     );
  5391.  
  5392. WINBASEAPI
  5393. BOOL
  5394. WINAPI
  5395. CopyFileExA(
  5396.     LPCSTR lpExistingFileName,
  5397.     LPCSTR lpNewFileName,
  5398.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5399.     LPVOID lpData OPTIONAL,
  5400.     LPBOOL pbCancel OPTIONAL,
  5401.     DWORD dwCopyFlags
  5402.     );
  5403. WINBASEAPI
  5404. BOOL
  5405. WINAPI
  5406. CopyFileExW(
  5407.     LPCWSTR lpExistingFileName,
  5408.     LPCWSTR lpNewFileName,
  5409.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5410.     LPVOID lpData OPTIONAL,
  5411.     LPBOOL pbCancel OPTIONAL,
  5412.     DWORD dwCopyFlags
  5413.     );
  5414. #ifdef UNICODE
  5415. #define CopyFileEx  CopyFileExW
  5416. #else
  5417. #define CopyFileEx  CopyFileExA
  5418. #endif // !UNICODE
  5419. #endif /* _WIN32_WINNT >= 0x0400 */
  5420.  
  5421. WINBASEAPI
  5422. BOOL
  5423. WINAPI
  5424. MoveFileA(
  5425.     LPCSTR lpExistingFileName,
  5426.     LPCSTR lpNewFileName
  5427.     );
  5428. WINBASEAPI
  5429. BOOL
  5430. WINAPI
  5431. MoveFileW(
  5432.     LPCWSTR lpExistingFileName,
  5433.     LPCWSTR lpNewFileName
  5434.     );
  5435. #ifdef UNICODE
  5436. #define MoveFile  MoveFileW
  5437. #else
  5438. #define MoveFile  MoveFileA
  5439. #endif // !UNICODE
  5440.  
  5441. WINBASEAPI
  5442. BOOL
  5443. WINAPI
  5444. MoveFileExA(
  5445.     LPCSTR lpExistingFileName,
  5446.     LPCSTR lpNewFileName,
  5447.     DWORD dwFlags
  5448.     );
  5449. WINBASEAPI
  5450. BOOL
  5451. WINAPI
  5452. MoveFileExW(
  5453.     LPCWSTR lpExistingFileName,
  5454.     LPCWSTR lpNewFileName,
  5455.     DWORD dwFlags
  5456.     );
  5457. #ifdef UNICODE
  5458. #define MoveFileEx  MoveFileExW
  5459. #else
  5460. #define MoveFileEx  MoveFileExA
  5461. #endif // !UNICODE
  5462.  
  5463. #define MOVEFILE_REPLACE_EXISTING   0x00000001
  5464. #define MOVEFILE_COPY_ALLOWED       0x00000002
  5465. #define MOVEFILE_DELAY_UNTIL_REBOOT 0x00000004
  5466. #define MOVEFILE_WRITE_THROUGH      0x00000008
  5467.  
  5468. WINBASEAPI
  5469. HANDLE
  5470. WINAPI
  5471. CreateNamedPipeA(
  5472.     LPCSTR lpName,
  5473.     DWORD dwOpenMode,
  5474.     DWORD dwPipeMode,
  5475.     DWORD nMaxInstances,
  5476.     DWORD nOutBufferSize,
  5477.     DWORD nInBufferSize,
  5478.     DWORD nDefaultTimeOut,
  5479.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5480.     );
  5481. WINBASEAPI
  5482. HANDLE
  5483. WINAPI
  5484. CreateNamedPipeW(
  5485.     LPCWSTR lpName,
  5486.     DWORD dwOpenMode,
  5487.     DWORD dwPipeMode,
  5488.     DWORD nMaxInstances,
  5489.     DWORD nOutBufferSize,
  5490.     DWORD nInBufferSize,
  5491.     DWORD nDefaultTimeOut,
  5492.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5493.     );
  5494. #ifdef UNICODE
  5495. #define CreateNamedPipe  CreateNamedPipeW
  5496. #else
  5497. #define CreateNamedPipe  CreateNamedPipeA
  5498. #endif // !UNICODE
  5499.  
  5500. WINBASEAPI
  5501. BOOL
  5502. WINAPI
  5503. GetNamedPipeHandleStateA(
  5504.     HANDLE hNamedPipe,
  5505.     LPDWORD lpState,
  5506.     LPDWORD lpCurInstances,
  5507.     LPDWORD lpMaxCollectionCount,
  5508.     LPDWORD lpCollectDataTimeout,
  5509.     LPSTR lpUserName,
  5510.     DWORD nMaxUserNameSize
  5511.     );
  5512. WINBASEAPI
  5513. BOOL
  5514. WINAPI
  5515. GetNamedPipeHandleStateW(
  5516.     HANDLE hNamedPipe,
  5517.     LPDWORD lpState,
  5518.     LPDWORD lpCurInstances,
  5519.     LPDWORD lpMaxCollectionCount,
  5520.     LPDWORD lpCollectDataTimeout,
  5521.     LPWSTR lpUserName,
  5522.     DWORD nMaxUserNameSize
  5523.     );
  5524. #ifdef UNICODE
  5525. #define GetNamedPipeHandleState  GetNamedPipeHandleStateW
  5526. #else
  5527. #define GetNamedPipeHandleState  GetNamedPipeHandleStateA
  5528. #endif // !UNICODE
  5529.  
  5530. WINBASEAPI
  5531. BOOL
  5532. WINAPI
  5533. CallNamedPipeA(
  5534.     LPCSTR lpNamedPipeName,
  5535.     LPVOID lpInBuffer,
  5536.     DWORD nInBufferSize,
  5537.     LPVOID lpOutBuffer,
  5538.     DWORD nOutBufferSize,
  5539.     LPDWORD lpBytesRead,
  5540.     DWORD nTimeOut
  5541.     );
  5542. WINBASEAPI
  5543. BOOL
  5544. WINAPI
  5545. CallNamedPipeW(
  5546.     LPCWSTR lpNamedPipeName,
  5547.     LPVOID lpInBuffer,
  5548.     DWORD nInBufferSize,
  5549.     LPVOID lpOutBuffer,
  5550.     DWORD nOutBufferSize,
  5551.     LPDWORD lpBytesRead,
  5552.     DWORD nTimeOut
  5553.     );
  5554. #ifdef UNICODE
  5555. #define CallNamedPipe  CallNamedPipeW
  5556. #else
  5557. #define CallNamedPipe  CallNamedPipeA
  5558. #endif // !UNICODE
  5559.  
  5560. WINBASEAPI
  5561. BOOL
  5562. WINAPI
  5563. WaitNamedPipeA(
  5564.     LPCSTR lpNamedPipeName,
  5565.     DWORD nTimeOut
  5566.     );
  5567. WINBASEAPI
  5568. BOOL
  5569. WINAPI
  5570. WaitNamedPipeW(
  5571.     LPCWSTR lpNamedPipeName,
  5572.     DWORD nTimeOut
  5573.     );
  5574. #ifdef UNICODE
  5575. #define WaitNamedPipe  WaitNamedPipeW
  5576. #else
  5577. #define WaitNamedPipe  WaitNamedPipeA
  5578. #endif // !UNICODE
  5579.  
  5580. WINBASEAPI
  5581. BOOL
  5582. WINAPI
  5583. SetVolumeLabelA(
  5584.     LPCSTR lpRootPathName,
  5585.     LPCSTR lpVolumeName
  5586.     );
  5587. WINBASEAPI
  5588. BOOL
  5589. WINAPI
  5590. SetVolumeLabelW(
  5591.     LPCWSTR lpRootPathName,
  5592.     LPCWSTR lpVolumeName
  5593.     );
  5594. #ifdef UNICODE
  5595. #define SetVolumeLabel  SetVolumeLabelW
  5596. #else
  5597. #define SetVolumeLabel  SetVolumeLabelA
  5598. #endif // !UNICODE
  5599.  
  5600. WINBASEAPI
  5601. VOID
  5602. WINAPI
  5603. SetFileApisToOEM( VOID );
  5604.  
  5605. WINBASEAPI
  5606. VOID
  5607. WINAPI
  5608. SetFileApisToANSI( VOID );
  5609.  
  5610. WINBASEAPI
  5611. BOOL
  5612. WINAPI
  5613. AreFileApisANSI( VOID );
  5614.  
  5615. WINBASEAPI
  5616. BOOL
  5617. WINAPI
  5618. GetVolumeInformationA(
  5619.     LPCSTR lpRootPathName,
  5620.     LPSTR lpVolumeNameBuffer,
  5621.     DWORD nVolumeNameSize,
  5622.     LPDWORD lpVolumeSerialNumber,
  5623.     LPDWORD lpMaximumComponentLength,
  5624.     LPDWORD lpFileSystemFlags,
  5625.     LPSTR lpFileSystemNameBuffer,
  5626.     DWORD nFileSystemNameSize
  5627.     );
  5628. WINBASEAPI
  5629. BOOL
  5630. WINAPI
  5631. GetVolumeInformationW(
  5632.     LPCWSTR lpRootPathName,
  5633.     LPWSTR lpVolumeNameBuffer,
  5634.     DWORD nVolumeNameSize,
  5635.     LPDWORD lpVolumeSerialNumber,
  5636.     LPDWORD lpMaximumComponentLength,
  5637.     LPDWORD lpFileSystemFlags,
  5638.     LPWSTR lpFileSystemNameBuffer,
  5639.     DWORD nFileSystemNameSize
  5640.     );
  5641. #ifdef UNICODE
  5642. #define GetVolumeInformation  GetVolumeInformationW
  5643. #else
  5644. #define GetVolumeInformation  GetVolumeInformationA
  5645. #endif // !UNICODE
  5646.  
  5647. WINBASEAPI
  5648. BOOL
  5649. WINAPI
  5650. CancelIo(
  5651.     HANDLE hFile
  5652.     );
  5653.  
  5654. //
  5655. // Event logging APIs
  5656. //
  5657.  
  5658. WINADVAPI
  5659. BOOL
  5660. WINAPI
  5661. ClearEventLogA (
  5662.     HANDLE hEventLog,
  5663.     LPCSTR lpBackupFileName
  5664.     );
  5665. WINADVAPI
  5666. BOOL
  5667. WINAPI
  5668. ClearEventLogW (
  5669.     HANDLE hEventLog,
  5670.     LPCWSTR lpBackupFileName
  5671.     );
  5672. #ifdef UNICODE
  5673. #define ClearEventLog  ClearEventLogW
  5674. #else
  5675. #define ClearEventLog  ClearEventLogA
  5676. #endif // !UNICODE
  5677.  
  5678. WINADVAPI
  5679. BOOL
  5680. WINAPI
  5681. BackupEventLogA (
  5682.     HANDLE hEventLog,
  5683.     LPCSTR lpBackupFileName
  5684.     );
  5685. WINADVAPI
  5686. BOOL
  5687. WINAPI
  5688. BackupEventLogW (
  5689.     HANDLE hEventLog,
  5690.     LPCWSTR lpBackupFileName
  5691.     );
  5692. #ifdef UNICODE
  5693. #define BackupEventLog  BackupEventLogW
  5694. #else
  5695. #define BackupEventLog  BackupEventLogA
  5696. #endif // !UNICODE
  5697.  
  5698. WINADVAPI
  5699. BOOL
  5700. WINAPI
  5701. CloseEventLog (
  5702.     HANDLE hEventLog
  5703.     );
  5704.  
  5705. WINADVAPI
  5706. BOOL
  5707. WINAPI
  5708. DeregisterEventSource (
  5709.     HANDLE hEventLog
  5710.     );
  5711.  
  5712. WINADVAPI
  5713. BOOL
  5714. WINAPI
  5715. NotifyChangeEventLog(
  5716.     HANDLE  hEventLog,
  5717.     HANDLE  hEvent
  5718.     );
  5719.  
  5720. WINADVAPI
  5721. BOOL
  5722. WINAPI
  5723. GetNumberOfEventLogRecords (
  5724.     HANDLE hEventLog,
  5725.     PDWORD NumberOfRecords
  5726.     );
  5727.  
  5728. WINADVAPI
  5729. BOOL
  5730. WINAPI
  5731. GetOldestEventLogRecord (
  5732.     HANDLE hEventLog,
  5733.     PDWORD OldestRecord
  5734.     );
  5735.  
  5736. WINADVAPI
  5737. HANDLE
  5738. WINAPI
  5739. OpenEventLogA (
  5740.     LPCSTR lpUNCServerName,
  5741.     LPCSTR lpSourceName
  5742.     );
  5743. WINADVAPI
  5744. HANDLE
  5745. WINAPI
  5746. OpenEventLogW (
  5747.     LPCWSTR lpUNCServerName,
  5748.     LPCWSTR lpSourceName
  5749.     );
  5750. #ifdef UNICODE
  5751. #define OpenEventLog  OpenEventLogW
  5752. #else
  5753. #define OpenEventLog  OpenEventLogA
  5754. #endif // !UNICODE
  5755.  
  5756. WINADVAPI
  5757. HANDLE
  5758. WINAPI
  5759. RegisterEventSourceA (
  5760.     LPCSTR lpUNCServerName,
  5761.     LPCSTR lpSourceName
  5762.     );
  5763. WINADVAPI
  5764. HANDLE
  5765. WINAPI
  5766. RegisterEventSourceW (
  5767.     LPCWSTR lpUNCServerName,
  5768.     LPCWSTR lpSourceName
  5769.     );
  5770. #ifdef UNICODE
  5771. #define RegisterEventSource  RegisterEventSourceW
  5772. #else
  5773. #define RegisterEventSource  RegisterEventSourceA
  5774. #endif // !UNICODE
  5775.  
  5776. WINADVAPI
  5777. HANDLE
  5778. WINAPI
  5779. OpenBackupEventLogA (
  5780.     LPCSTR lpUNCServerName,
  5781.     LPCSTR lpFileName
  5782.     );
  5783. WINADVAPI
  5784. HANDLE
  5785. WINAPI
  5786. OpenBackupEventLogW (
  5787.     LPCWSTR lpUNCServerName,
  5788.     LPCWSTR lpFileName
  5789.     );
  5790. #ifdef UNICODE
  5791. #define OpenBackupEventLog  OpenBackupEventLogW
  5792. #else
  5793. #define OpenBackupEventLog  OpenBackupEventLogA
  5794. #endif // !UNICODE
  5795.  
  5796. WINADVAPI
  5797. BOOL
  5798. WINAPI
  5799. ReadEventLogA (
  5800.      HANDLE     hEventLog,
  5801.      DWORD      dwReadFlags,
  5802.      DWORD      dwRecordOffset,
  5803.      LPVOID     lpBuffer,
  5804.      DWORD      nNumberOfBytesToRead,
  5805.      DWORD      *pnBytesRead,
  5806.      DWORD      *pnMinNumberOfBytesNeeded
  5807.     );
  5808. WINADVAPI
  5809. BOOL
  5810. WINAPI
  5811. ReadEventLogW (
  5812.      HANDLE     hEventLog,
  5813.      DWORD      dwReadFlags,
  5814.      DWORD      dwRecordOffset,
  5815.      LPVOID     lpBuffer,
  5816.      DWORD      nNumberOfBytesToRead,
  5817.      DWORD      *pnBytesRead,
  5818.      DWORD      *pnMinNumberOfBytesNeeded
  5819.     );
  5820. #ifdef UNICODE
  5821. #define ReadEventLog  ReadEventLogW
  5822. #else
  5823. #define ReadEventLog  ReadEventLogA
  5824. #endif // !UNICODE
  5825.  
  5826. WINADVAPI
  5827. BOOL
  5828. WINAPI
  5829. ReportEventA (
  5830.      HANDLE     hEventLog,
  5831.      WORD       wType,
  5832.      WORD       wCategory,
  5833.      DWORD      dwEventID,
  5834.      PSID       lpUserSid,
  5835.      WORD       wNumStrings,
  5836.      DWORD      dwDataSize,
  5837.      LPCSTR   *lpStrings,
  5838.      LPVOID     lpRawData
  5839.     );
  5840. WINADVAPI
  5841. BOOL
  5842. WINAPI
  5843. ReportEventW (
  5844.      HANDLE     hEventLog,
  5845.      WORD       wType,
  5846.      WORD       wCategory,
  5847.      DWORD      dwEventID,
  5848.      PSID       lpUserSid,
  5849.      WORD       wNumStrings,
  5850.      DWORD      dwDataSize,
  5851.      LPCWSTR   *lpStrings,
  5852.      LPVOID     lpRawData
  5853.     );
  5854. #ifdef UNICODE
  5855. #define ReportEvent  ReportEventW
  5856. #else
  5857. #define ReportEvent  ReportEventA
  5858. #endif // !UNICODE
  5859.  
  5860. //
  5861. //
  5862. // Security APIs
  5863. //
  5864.  
  5865.  
  5866. WINADVAPI
  5867. BOOL
  5868. WINAPI
  5869. DuplicateToken(
  5870.     HANDLE ExistingTokenHandle,
  5871.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  5872.     PHANDLE DuplicateTokenHandle
  5873.     );
  5874.  
  5875. WINADVAPI
  5876. BOOL
  5877. WINAPI
  5878. GetKernelObjectSecurity (
  5879.     HANDLE Handle,
  5880.     SECURITY_INFORMATION RequestedInformation,
  5881.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  5882.     DWORD nLength,
  5883.     LPDWORD lpnLengthNeeded
  5884.     );
  5885.  
  5886. WINADVAPI
  5887. BOOL
  5888. WINAPI
  5889. ImpersonateNamedPipeClient(
  5890.     HANDLE hNamedPipe
  5891.     );
  5892.  
  5893. WINADVAPI
  5894. BOOL
  5895. WINAPI
  5896. ImpersonateSelf(
  5897.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
  5898.     );
  5899.  
  5900.  
  5901. WINADVAPI
  5902. BOOL
  5903. WINAPI
  5904. RevertToSelf (
  5905.     VOID
  5906.     );
  5907.  
  5908. WINADVAPI
  5909. BOOL
  5910. APIENTRY
  5911. SetThreadToken (
  5912.     PHANDLE Thread,
  5913.     HANDLE Token
  5914.     );
  5915.  
  5916. WINADVAPI
  5917. BOOL
  5918. WINAPI
  5919. AccessCheck (
  5920.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  5921.     HANDLE ClientToken,
  5922.     DWORD DesiredAccess,
  5923.     PGENERIC_MAPPING GenericMapping,
  5924.     PPRIVILEGE_SET PrivilegeSet,
  5925.     LPDWORD PrivilegeSetLength,
  5926.     LPDWORD GrantedAccess,
  5927.     LPBOOL AccessStatus
  5928.     );
  5929.  
  5930.  
  5931. WINADVAPI
  5932. BOOL
  5933. WINAPI
  5934. OpenProcessToken (
  5935.     HANDLE ProcessHandle,
  5936.     DWORD DesiredAccess,
  5937.     PHANDLE TokenHandle
  5938.     );
  5939.  
  5940.  
  5941. WINADVAPI
  5942. BOOL
  5943. WINAPI
  5944. OpenThreadToken (
  5945.     HANDLE ThreadHandle,
  5946.     DWORD DesiredAccess,
  5947.     BOOL OpenAsSelf,
  5948.     PHANDLE TokenHandle
  5949.     );
  5950.  
  5951.  
  5952. WINADVAPI
  5953. BOOL
  5954. WINAPI
  5955. GetTokenInformation (
  5956.     HANDLE TokenHandle,
  5957.     TOKEN_INFORMATION_CLASS TokenInformationClass,
  5958.     LPVOID TokenInformation,
  5959.     DWORD TokenInformationLength,
  5960.     PDWORD ReturnLength
  5961.     );
  5962.  
  5963.  
  5964. WINADVAPI
  5965. BOOL
  5966. WINAPI
  5967. SetTokenInformation (
  5968.     HANDLE TokenHandle,
  5969.     TOKEN_INFORMATION_CLASS TokenInformationClass,
  5970.     LPVOID TokenInformation,
  5971.     DWORD TokenInformationLength
  5972.     );
  5973.  
  5974.  
  5975. WINADVAPI
  5976. BOOL
  5977. WINAPI
  5978. AdjustTokenPrivileges (
  5979.     HANDLE TokenHandle,
  5980.     BOOL DisableAllPrivileges,
  5981.     PTOKEN_PRIVILEGES NewState,
  5982.     DWORD BufferLength,
  5983.     PTOKEN_PRIVILEGES PreviousState,
  5984.     PDWORD ReturnLength
  5985.     );
  5986.  
  5987.  
  5988. WINADVAPI
  5989. BOOL
  5990. WINAPI
  5991. AdjustTokenGroups (
  5992.     HANDLE TokenHandle,
  5993.     BOOL ResetToDefault,
  5994.     PTOKEN_GROUPS NewState,
  5995.     DWORD BufferLength,
  5996.     PTOKEN_GROUPS PreviousState,
  5997.     PDWORD ReturnLength
  5998.     );
  5999.  
  6000.  
  6001. WINADVAPI
  6002. BOOL
  6003. WINAPI
  6004. PrivilegeCheck (
  6005.     HANDLE ClientToken,
  6006.     PPRIVILEGE_SET RequiredPrivileges,
  6007.     LPBOOL pfResult
  6008.     );
  6009.  
  6010.  
  6011. WINADVAPI
  6012. BOOL
  6013. WINAPI
  6014. AccessCheckAndAuditAlarmA (
  6015.     LPCSTR SubsystemName,
  6016.     LPVOID HandleId,
  6017.     LPSTR ObjectTypeName,
  6018.     LPSTR ObjectName,
  6019.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6020.     DWORD DesiredAccess,
  6021.     PGENERIC_MAPPING GenericMapping,
  6022.     BOOL ObjectCreation,
  6023.     LPDWORD GrantedAccess,
  6024.     LPBOOL AccessStatus,
  6025.     LPBOOL pfGenerateOnClose
  6026.     );
  6027. WINADVAPI
  6028. BOOL
  6029. WINAPI
  6030. AccessCheckAndAuditAlarmW (
  6031.     LPCWSTR SubsystemName,
  6032.     LPVOID HandleId,
  6033.     LPWSTR ObjectTypeName,
  6034.     LPWSTR ObjectName,
  6035.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6036.     DWORD DesiredAccess,
  6037.     PGENERIC_MAPPING GenericMapping,
  6038.     BOOL ObjectCreation,
  6039.     LPDWORD GrantedAccess,
  6040.     LPBOOL AccessStatus,
  6041.     LPBOOL pfGenerateOnClose
  6042.     );
  6043. #ifdef UNICODE
  6044. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmW
  6045. #else
  6046. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmA
  6047. #endif // !UNICODE
  6048.  
  6049.  
  6050. WINADVAPI
  6051. BOOL
  6052. WINAPI
  6053. ObjectOpenAuditAlarmA (
  6054.     LPCSTR SubsystemName,
  6055.     LPVOID HandleId,
  6056.     LPSTR ObjectTypeName,
  6057.     LPSTR ObjectName,
  6058.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6059.     HANDLE ClientToken,
  6060.     DWORD DesiredAccess,
  6061.     DWORD GrantedAccess,
  6062.     PPRIVILEGE_SET Privileges,
  6063.     BOOL ObjectCreation,
  6064.     BOOL AccessGranted,
  6065.     LPBOOL GenerateOnClose
  6066.     );
  6067. WINADVAPI
  6068. BOOL
  6069. WINAPI
  6070. ObjectOpenAuditAlarmW (
  6071.     LPCWSTR SubsystemName,
  6072.     LPVOID HandleId,
  6073.     LPWSTR ObjectTypeName,
  6074.     LPWSTR ObjectName,
  6075.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6076.     HANDLE ClientToken,
  6077.     DWORD DesiredAccess,
  6078.     DWORD GrantedAccess,
  6079.     PPRIVILEGE_SET Privileges,
  6080.     BOOL ObjectCreation,
  6081.     BOOL AccessGranted,
  6082.     LPBOOL GenerateOnClose
  6083.     );
  6084. #ifdef UNICODE
  6085. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmW
  6086. #else
  6087. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmA
  6088. #endif // !UNICODE
  6089.  
  6090.  
  6091. WINADVAPI
  6092. BOOL
  6093. WINAPI
  6094. ObjectPrivilegeAuditAlarmA (
  6095.     LPCSTR SubsystemName,
  6096.     LPVOID HandleId,
  6097.     HANDLE ClientToken,
  6098.     DWORD DesiredAccess,
  6099.     PPRIVILEGE_SET Privileges,
  6100.     BOOL AccessGranted
  6101.     );
  6102. WINADVAPI
  6103. BOOL
  6104. WINAPI
  6105. ObjectPrivilegeAuditAlarmW (
  6106.     LPCWSTR SubsystemName,
  6107.     LPVOID HandleId,
  6108.     HANDLE ClientToken,
  6109.     DWORD DesiredAccess,
  6110.     PPRIVILEGE_SET Privileges,
  6111.     BOOL AccessGranted
  6112.     );
  6113. #ifdef UNICODE
  6114. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmW
  6115. #else
  6116. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmA
  6117. #endif // !UNICODE
  6118.  
  6119.  
  6120. WINADVAPI
  6121. BOOL
  6122. WINAPI
  6123. ObjectCloseAuditAlarmA (
  6124.     LPCSTR SubsystemName,
  6125.     LPVOID HandleId,
  6126.     BOOL GenerateOnClose
  6127.     );
  6128. WINADVAPI
  6129. BOOL
  6130. WINAPI
  6131. ObjectCloseAuditAlarmW (
  6132.     LPCWSTR SubsystemName,
  6133.     LPVOID HandleId,
  6134.     BOOL GenerateOnClose
  6135.     );
  6136. #ifdef UNICODE
  6137. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmW
  6138. #else
  6139. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmA
  6140. #endif // !UNICODE
  6141.  
  6142.  
  6143. WINADVAPI
  6144. BOOL
  6145. WINAPI
  6146. ObjectDeleteAuditAlarmA (
  6147.     LPCSTR SubsystemName,
  6148.     LPVOID HandleId,
  6149.     BOOL GenerateOnClose
  6150.     );
  6151. WINADVAPI
  6152. BOOL
  6153. WINAPI
  6154. ObjectDeleteAuditAlarmW (
  6155.     LPCWSTR SubsystemName,
  6156.     LPVOID HandleId,
  6157.     BOOL GenerateOnClose
  6158.     );
  6159. #ifdef UNICODE
  6160. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmW
  6161. #else
  6162. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmA
  6163. #endif // !UNICODE
  6164.  
  6165.  
  6166. WINADVAPI
  6167. BOOL
  6168. WINAPI
  6169. PrivilegedServiceAuditAlarmA (
  6170.     LPCSTR SubsystemName,
  6171.     LPCSTR ServiceName,
  6172.     HANDLE ClientToken,
  6173.     PPRIVILEGE_SET Privileges,
  6174.     BOOL AccessGranted
  6175.     );
  6176. WINADVAPI
  6177. BOOL
  6178. WINAPI
  6179. PrivilegedServiceAuditAlarmW (
  6180.     LPCWSTR SubsystemName,
  6181.     LPCWSTR ServiceName,
  6182.     HANDLE ClientToken,
  6183.     PPRIVILEGE_SET Privileges,
  6184.     BOOL AccessGranted
  6185.     );
  6186. #ifdef UNICODE
  6187. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmW
  6188. #else
  6189. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmA
  6190. #endif // !UNICODE
  6191.  
  6192.  
  6193. WINADVAPI
  6194. BOOL
  6195. WINAPI
  6196. IsValidSid (
  6197.     PSID pSid
  6198.     );
  6199.  
  6200.  
  6201. WINADVAPI
  6202. BOOL
  6203. WINAPI
  6204. EqualSid (
  6205.     PSID pSid1,
  6206.     PSID pSid2
  6207.     );
  6208.  
  6209.  
  6210. WINADVAPI
  6211. BOOL
  6212. WINAPI
  6213. EqualPrefixSid (
  6214.     PSID pSid1,
  6215.     PSID pSid2
  6216.     );
  6217.  
  6218.  
  6219. WINADVAPI
  6220. DWORD
  6221. WINAPI
  6222. GetSidLengthRequired (
  6223.     UCHAR nSubAuthorityCount
  6224.     );
  6225.  
  6226.  
  6227. WINADVAPI
  6228. BOOL
  6229. WINAPI
  6230. AllocateAndInitializeSid (
  6231.     PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  6232.     BYTE nSubAuthorityCount,
  6233.     DWORD nSubAuthority0,
  6234.     DWORD nSubAuthority1,
  6235.     DWORD nSubAuthority2,
  6236.     DWORD nSubAuthority3,
  6237.     DWORD nSubAuthority4,
  6238.     DWORD nSubAuthority5,
  6239.     DWORD nSubAuthority6,
  6240.     DWORD nSubAuthority7,
  6241.     PSID *pSid
  6242.     );
  6243.  
  6244. WINADVAPI
  6245. PVOID
  6246. WINAPI
  6247. FreeSid(
  6248.     PSID pSid
  6249.     );
  6250.  
  6251. WINADVAPI
  6252. BOOL
  6253. WINAPI
  6254. InitializeSid (
  6255.     PSID Sid,
  6256.     PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  6257.     BYTE nSubAuthorityCount
  6258.     );
  6259.  
  6260.  
  6261. WINADVAPI
  6262. PSID_IDENTIFIER_AUTHORITY
  6263. WINAPI
  6264. GetSidIdentifierAuthority (
  6265.     PSID pSid
  6266.     );
  6267.  
  6268.  
  6269. WINADVAPI
  6270. PDWORD
  6271. WINAPI
  6272. GetSidSubAuthority (
  6273.     PSID pSid,
  6274.     DWORD nSubAuthority
  6275.     );
  6276.  
  6277.  
  6278. WINADVAPI
  6279. PUCHAR
  6280. WINAPI
  6281. GetSidSubAuthorityCount (
  6282.     PSID pSid
  6283.     );
  6284.  
  6285.  
  6286. WINADVAPI
  6287. DWORD
  6288. WINAPI
  6289. GetLengthSid (
  6290.     PSID pSid
  6291.     );
  6292.  
  6293.  
  6294. WINADVAPI
  6295. BOOL
  6296. WINAPI
  6297. CopySid (
  6298.     DWORD nDestinationSidLength,
  6299.     PSID pDestinationSid,
  6300.     PSID pSourceSid
  6301.     );
  6302.  
  6303.  
  6304. WINADVAPI
  6305. BOOL
  6306. WINAPI
  6307. AreAllAccessesGranted (
  6308.     DWORD GrantedAccess,
  6309.     DWORD DesiredAccess
  6310.     );
  6311.  
  6312.  
  6313. WINADVAPI
  6314. BOOL
  6315. WINAPI
  6316. AreAnyAccessesGranted (
  6317.     DWORD GrantedAccess,
  6318.     DWORD DesiredAccess
  6319.     );
  6320.  
  6321.  
  6322. WINADVAPI
  6323. VOID
  6324. WINAPI
  6325. MapGenericMask (
  6326.     PDWORD AccessMask,
  6327.     PGENERIC_MAPPING GenericMapping
  6328.     );
  6329.  
  6330.  
  6331. WINADVAPI
  6332. BOOL
  6333. WINAPI
  6334. IsValidAcl (
  6335.     PACL pAcl
  6336.     );
  6337.  
  6338.  
  6339. WINADVAPI
  6340. BOOL
  6341. WINAPI
  6342. InitializeAcl (
  6343.     PACL pAcl,
  6344.     DWORD nAclLength,
  6345.     DWORD dwAclRevision
  6346.     );
  6347.  
  6348.  
  6349. WINADVAPI
  6350. BOOL
  6351. WINAPI
  6352. GetAclInformation (
  6353.     PACL pAcl,
  6354.     LPVOID pAclInformation,
  6355.     DWORD nAclInformationLength,
  6356.     ACL_INFORMATION_CLASS dwAclInformationClass
  6357.     );
  6358.  
  6359.  
  6360. WINADVAPI
  6361. BOOL
  6362. WINAPI
  6363. SetAclInformation (
  6364.     PACL pAcl,
  6365.     LPVOID pAclInformation,
  6366.     DWORD nAclInformationLength,
  6367.     ACL_INFORMATION_CLASS dwAclInformationClass
  6368.     );
  6369.  
  6370.  
  6371. WINADVAPI
  6372. BOOL
  6373. WINAPI
  6374. AddAce (
  6375.     PACL pAcl,
  6376.     DWORD dwAceRevision,
  6377.     DWORD dwStartingAceIndex,
  6378.     LPVOID pAceList,
  6379.     DWORD nAceListLength
  6380.     );
  6381.  
  6382.  
  6383. WINADVAPI
  6384. BOOL
  6385. WINAPI
  6386. DeleteAce (
  6387.     PACL pAcl,
  6388.     DWORD dwAceIndex
  6389.     );
  6390.  
  6391.  
  6392. WINADVAPI
  6393. BOOL
  6394. WINAPI
  6395. GetAce (
  6396.     PACL pAcl,
  6397.     DWORD dwAceIndex,
  6398.     LPVOID *pAce
  6399.     );
  6400.  
  6401.  
  6402. WINADVAPI
  6403. BOOL
  6404. WINAPI
  6405. AddAccessAllowedAce (
  6406.     PACL pAcl,
  6407.     DWORD dwAceRevision,
  6408.     DWORD AccessMask,
  6409.     PSID pSid
  6410.     );
  6411.  
  6412.  
  6413. WINADVAPI
  6414. BOOL
  6415. WINAPI
  6416. AddAccessDeniedAce (
  6417.     PACL pAcl,
  6418.     DWORD dwAceRevision,
  6419.     DWORD AccessMask,
  6420.     PSID pSid
  6421.     );
  6422.  
  6423.  
  6424. WINADVAPI
  6425. BOOL
  6426. WINAPI
  6427. AddAuditAccessAce(
  6428.     PACL pAcl,
  6429.     DWORD dwAceRevision,
  6430.     DWORD dwAccessMask,
  6431.     PSID pSid,
  6432.     BOOL bAuditSuccess,
  6433.     BOOL bAuditFailure
  6434.     );
  6435.  
  6436.  
  6437. WINADVAPI
  6438. BOOL
  6439. WINAPI
  6440. FindFirstFreeAce (
  6441.     PACL pAcl,
  6442.     LPVOID *pAce
  6443.     );
  6444.  
  6445.  
  6446. WINADVAPI
  6447. BOOL
  6448. WINAPI
  6449. InitializeSecurityDescriptor (
  6450.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6451.     DWORD dwRevision
  6452.     );
  6453.  
  6454.  
  6455. WINADVAPI
  6456. BOOL
  6457. WINAPI
  6458. IsValidSecurityDescriptor (
  6459.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  6460.     );
  6461.  
  6462.  
  6463. WINADVAPI
  6464. DWORD
  6465. WINAPI
  6466. GetSecurityDescriptorLength (
  6467.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  6468.     );
  6469.  
  6470.  
  6471. WINADVAPI
  6472. BOOL
  6473. WINAPI
  6474. GetSecurityDescriptorControl (
  6475.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6476.     PSECURITY_DESCRIPTOR_CONTROL pControl,
  6477.     LPDWORD lpdwRevision
  6478.     );
  6479.  
  6480.  
  6481. WINADVAPI
  6482. BOOL
  6483. WINAPI
  6484. SetSecurityDescriptorDacl (
  6485.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6486.     BOOL bDaclPresent,
  6487.     PACL pDacl,
  6488.     BOOL bDaclDefaulted
  6489.     );
  6490.  
  6491.  
  6492. WINADVAPI
  6493. BOOL
  6494. WINAPI
  6495. GetSecurityDescriptorDacl (
  6496.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6497.     LPBOOL lpbDaclPresent,
  6498.     PACL *pDacl,
  6499.     LPBOOL lpbDaclDefaulted
  6500.     );
  6501.  
  6502.  
  6503. WINADVAPI
  6504. BOOL
  6505. WINAPI
  6506. SetSecurityDescriptorSacl (
  6507.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6508.     BOOL bSaclPresent,
  6509.     PACL pSacl,
  6510.     BOOL bSaclDefaulted
  6511.     );
  6512.  
  6513.  
  6514. WINADVAPI
  6515. BOOL
  6516. WINAPI
  6517. GetSecurityDescriptorSacl (
  6518.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6519.     LPBOOL lpbSaclPresent,
  6520.     PACL *pSacl,
  6521.     LPBOOL lpbSaclDefaulted
  6522.     );
  6523.  
  6524.  
  6525. WINADVAPI
  6526. BOOL
  6527. WINAPI
  6528. SetSecurityDescriptorOwner (
  6529.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6530.     PSID pOwner,
  6531.     BOOL bOwnerDefaulted
  6532.     );
  6533.  
  6534.  
  6535. WINADVAPI
  6536. BOOL
  6537. WINAPI
  6538. GetSecurityDescriptorOwner (
  6539.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6540.     PSID *pOwner,
  6541.     LPBOOL lpbOwnerDefaulted
  6542.     );
  6543.  
  6544.  
  6545. WINADVAPI
  6546. BOOL
  6547. WINAPI
  6548. SetSecurityDescriptorGroup (
  6549.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6550.     PSID pGroup,
  6551.     BOOL bGroupDefaulted
  6552.     );
  6553.  
  6554.  
  6555. WINADVAPI
  6556. BOOL
  6557. WINAPI
  6558. GetSecurityDescriptorGroup (
  6559.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6560.     PSID *pGroup,
  6561.     LPBOOL lpbGroupDefaulted
  6562.     );
  6563.  
  6564.  
  6565. WINADVAPI
  6566. BOOL
  6567. WINAPI
  6568. CreatePrivateObjectSecurity (
  6569.     PSECURITY_DESCRIPTOR ParentDescriptor,
  6570.     PSECURITY_DESCRIPTOR CreatorDescriptor,
  6571.     PSECURITY_DESCRIPTOR * NewDescriptor,
  6572.     BOOL IsDirectoryObject,
  6573.     HANDLE Token,
  6574.     PGENERIC_MAPPING GenericMapping
  6575.     );
  6576.  
  6577.  
  6578. WINADVAPI
  6579. BOOL
  6580. WINAPI
  6581. SetPrivateObjectSecurity (
  6582.     SECURITY_INFORMATION SecurityInformation,
  6583.     PSECURITY_DESCRIPTOR ModificationDescriptor,
  6584.     PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  6585.     PGENERIC_MAPPING GenericMapping,
  6586.     HANDLE Token
  6587.     );
  6588.  
  6589.  
  6590. WINADVAPI
  6591. BOOL
  6592. WINAPI
  6593. GetPrivateObjectSecurity (
  6594.     PSECURITY_DESCRIPTOR ObjectDescriptor,
  6595.     SECURITY_INFORMATION SecurityInformation,
  6596.     PSECURITY_DESCRIPTOR ResultantDescriptor,
  6597.     DWORD DescriptorLength,
  6598.     PDWORD ReturnLength
  6599.     );
  6600.  
  6601.  
  6602. WINADVAPI
  6603. BOOL
  6604. WINAPI
  6605. DestroyPrivateObjectSecurity (
  6606.     PSECURITY_DESCRIPTOR * ObjectDescriptor
  6607.     );
  6608.  
  6609.  
  6610. WINADVAPI
  6611. BOOL
  6612. WINAPI
  6613. MakeSelfRelativeSD (
  6614.     PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  6615.     PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  6616.     LPDWORD lpdwBufferLength
  6617.     );
  6618.  
  6619.  
  6620. WINADVAPI
  6621. BOOL
  6622. WINAPI
  6623. MakeAbsoluteSD (
  6624.     PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  6625.     PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  6626.     LPDWORD lpdwAbsoluteSecurityDescriptorSize,
  6627.     PACL pDacl,
  6628.     LPDWORD lpdwDaclSize,
  6629.     PACL pSacl,
  6630.     LPDWORD lpdwSaclSize,
  6631.     PSID pOwner,
  6632.     LPDWORD lpdwOwnerSize,
  6633.     PSID pPrimaryGroup,
  6634.     LPDWORD lpdwPrimaryGroupSize
  6635.     );
  6636.  
  6637.  
  6638. WINADVAPI
  6639. BOOL
  6640. WINAPI
  6641. SetFileSecurityA (
  6642.     LPCSTR lpFileName,
  6643.     SECURITY_INFORMATION SecurityInformation,
  6644.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  6645.     );
  6646. WINADVAPI
  6647. BOOL
  6648. WINAPI
  6649. SetFileSecurityW (
  6650.     LPCWSTR lpFileName,
  6651.     SECURITY_INFORMATION SecurityInformation,
  6652.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  6653.     );
  6654. #ifdef UNICODE
  6655. #define SetFileSecurity  SetFileSecurityW
  6656. #else
  6657. #define SetFileSecurity  SetFileSecurityA
  6658. #endif // !UNICODE
  6659.  
  6660.  
  6661. WINADVAPI
  6662. BOOL
  6663. WINAPI
  6664. GetFileSecurityA (
  6665.     LPCSTR lpFileName,
  6666.     SECURITY_INFORMATION RequestedInformation,
  6667.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6668.     DWORD nLength,
  6669.     LPDWORD lpnLengthNeeded
  6670.     );
  6671. WINADVAPI
  6672. BOOL
  6673. WINAPI
  6674. GetFileSecurityW (
  6675.     LPCWSTR lpFileName,
  6676.     SECURITY_INFORMATION RequestedInformation,
  6677.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6678.     DWORD nLength,
  6679.     LPDWORD lpnLengthNeeded
  6680.     );
  6681. #ifdef UNICODE
  6682. #define GetFileSecurity  GetFileSecurityW
  6683. #else
  6684. #define GetFileSecurity  GetFileSecurityA
  6685. #endif // !UNICODE
  6686.  
  6687.  
  6688. WINADVAPI
  6689. BOOL
  6690. WINAPI
  6691. SetKernelObjectSecurity (
  6692.     HANDLE Handle,
  6693.     SECURITY_INFORMATION SecurityInformation,
  6694.     PSECURITY_DESCRIPTOR SecurityDescriptor
  6695.     );
  6696.  
  6697.  
  6698.  
  6699. WINBASEAPI
  6700. HANDLE
  6701. WINAPI
  6702. FindFirstChangeNotificationA(
  6703.     LPCSTR lpPathName,
  6704.     BOOL bWatchSubtree,
  6705.     DWORD dwNotifyFilter
  6706.     );
  6707. WINBASEAPI
  6708. HANDLE
  6709. WINAPI
  6710. FindFirstChangeNotificationW(
  6711.     LPCWSTR lpPathName,
  6712.     BOOL bWatchSubtree,
  6713.     DWORD dwNotifyFilter
  6714.     );
  6715. #ifdef UNICODE
  6716. #define FindFirstChangeNotification  FindFirstChangeNotificationW
  6717. #else
  6718. #define FindFirstChangeNotification  FindFirstChangeNotificationA
  6719. #endif // !UNICODE
  6720.  
  6721. WINBASEAPI
  6722. BOOL
  6723. WINAPI
  6724. FindNextChangeNotification(
  6725.     HANDLE hChangeHandle
  6726.     );
  6727.  
  6728. WINBASEAPI
  6729. BOOL
  6730. WINAPI
  6731. FindCloseChangeNotification(
  6732.     HANDLE hChangeHandle
  6733.     );
  6734.  
  6735. #if(_WIN32_WINNT >= 0x0400)
  6736. WINBASEAPI
  6737. BOOL
  6738. WINAPI
  6739. ReadDirectoryChangesW(
  6740.     HANDLE hDirectory,
  6741.     LPVOID lpBuffer,
  6742.     DWORD nBufferLength,
  6743.     BOOL bWatchSubtree,
  6744.     DWORD dwNotifyFilter,
  6745.     LPDWORD lpBytesReturned,
  6746.     LPOVERLAPPED lpOverlapped,
  6747.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  6748.     );
  6749. #endif /* _WIN32_WINNT >= 0x0400 */
  6750.  
  6751. WINBASEAPI
  6752. BOOL
  6753. WINAPI
  6754. VirtualLock(
  6755.     LPVOID lpAddress,
  6756.     DWORD dwSize
  6757.     );
  6758.  
  6759. WINBASEAPI
  6760. BOOL
  6761. WINAPI
  6762. VirtualUnlock(
  6763.     LPVOID lpAddress,
  6764.     DWORD dwSize
  6765.     );
  6766.  
  6767. WINBASEAPI
  6768. LPVOID
  6769. WINAPI
  6770. MapViewOfFileEx(
  6771.     HANDLE hFileMappingObject,
  6772.     DWORD dwDesiredAccess,
  6773.     DWORD dwFileOffsetHigh,
  6774.     DWORD dwFileOffsetLow,
  6775.     DWORD dwNumberOfBytesToMap,
  6776.     LPVOID lpBaseAddress
  6777.     );
  6778.  
  6779. WINBASEAPI
  6780. BOOL
  6781. WINAPI
  6782. SetPriorityClass(
  6783.     HANDLE hProcess,
  6784.     DWORD dwPriorityClass
  6785.     );
  6786.  
  6787. WINBASEAPI
  6788. DWORD
  6789. WINAPI
  6790. GetPriorityClass(
  6791.     HANDLE hProcess
  6792.     );
  6793.  
  6794. WINBASEAPI
  6795. BOOL
  6796. WINAPI
  6797. IsBadReadPtr(
  6798.     CONST VOID *lp,
  6799.     UINT ucb
  6800.     );
  6801.  
  6802. WINBASEAPI
  6803. BOOL
  6804. WINAPI
  6805. IsBadWritePtr(
  6806.     LPVOID lp,
  6807.     UINT ucb
  6808.     );
  6809.  
  6810. WINBASEAPI
  6811. BOOL
  6812. WINAPI
  6813. IsBadHugeReadPtr(
  6814.     CONST VOID *lp,
  6815.     UINT ucb
  6816.     );
  6817.  
  6818. WINBASEAPI
  6819. BOOL
  6820. WINAPI
  6821. IsBadHugeWritePtr(
  6822.     LPVOID lp,
  6823.     UINT ucb
  6824.     );
  6825.  
  6826. WINBASEAPI
  6827. BOOL
  6828. WINAPI
  6829. IsBadCodePtr(
  6830.     FARPROC lpfn
  6831.     );
  6832.  
  6833. WINBASEAPI
  6834. BOOL
  6835. WINAPI
  6836. IsBadStringPtrA(
  6837.     LPCSTR lpsz,
  6838.     UINT ucchMax
  6839.     );
  6840. WINBASEAPI
  6841. BOOL
  6842. WINAPI
  6843. IsBadStringPtrW(
  6844.     LPCWSTR lpsz,
  6845.     UINT ucchMax
  6846.     );
  6847. #ifdef UNICODE
  6848. #define IsBadStringPtr  IsBadStringPtrW
  6849. #else
  6850. #define IsBadStringPtr  IsBadStringPtrA
  6851. #endif // !UNICODE
  6852.  
  6853. WINADVAPI
  6854. BOOL
  6855. WINAPI
  6856. LookupAccountSidA(
  6857.     LPCSTR lpSystemName,
  6858.     PSID Sid,
  6859.     LPSTR Name,
  6860.     LPDWORD cbName,
  6861.     LPSTR ReferencedDomainName,
  6862.     LPDWORD cbReferencedDomainName,
  6863.     PSID_NAME_USE peUse
  6864.     );
  6865. WINADVAPI
  6866. BOOL
  6867. WINAPI
  6868. LookupAccountSidW(
  6869.     LPCWSTR lpSystemName,
  6870.     PSID Sid,
  6871.     LPWSTR Name,
  6872.     LPDWORD cbName,
  6873.     LPWSTR ReferencedDomainName,
  6874.     LPDWORD cbReferencedDomainName,
  6875.     PSID_NAME_USE peUse
  6876.     );
  6877. #ifdef UNICODE
  6878. #define LookupAccountSid  LookupAccountSidW
  6879. #else
  6880. #define LookupAccountSid  LookupAccountSidA
  6881. #endif // !UNICODE
  6882.  
  6883. WINADVAPI
  6884. BOOL
  6885. WINAPI
  6886. LookupAccountNameA(
  6887.     LPCSTR lpSystemName,
  6888.     LPCSTR lpAccountName,
  6889.     PSID Sid,
  6890.     LPDWORD cbSid,
  6891.     LPSTR ReferencedDomainName,
  6892.     LPDWORD cbReferencedDomainName,
  6893.     PSID_NAME_USE peUse
  6894.     );
  6895. WINADVAPI
  6896. BOOL
  6897. WINAPI
  6898. LookupAccountNameW(
  6899.     LPCWSTR lpSystemName,
  6900.     LPCWSTR lpAccountName,
  6901.     PSID Sid,
  6902.     LPDWORD cbSid,
  6903.     LPWSTR ReferencedDomainName,
  6904.     LPDWORD cbReferencedDomainName,
  6905.     PSID_NAME_USE peUse
  6906.     );
  6907. #ifdef UNICODE
  6908. #define LookupAccountName  LookupAccountNameW
  6909. #else
  6910. #define LookupAccountName  LookupAccountNameA
  6911. #endif // !UNICODE
  6912.  
  6913. WINADVAPI
  6914. BOOL
  6915. WINAPI
  6916. LookupPrivilegeValueA(
  6917.     LPCSTR lpSystemName,
  6918.     LPCSTR lpName,
  6919.     PLUID   lpLuid
  6920.     );
  6921. WINADVAPI
  6922. BOOL
  6923. WINAPI
  6924. LookupPrivilegeValueW(
  6925.     LPCWSTR lpSystemName,
  6926.     LPCWSTR lpName,
  6927.     PLUID   lpLuid
  6928.     );
  6929. #ifdef UNICODE
  6930. #define LookupPrivilegeValue  LookupPrivilegeValueW
  6931. #else
  6932. #define LookupPrivilegeValue  LookupPrivilegeValueA
  6933. #endif // !UNICODE
  6934.  
  6935. WINADVAPI
  6936. BOOL
  6937. WINAPI
  6938. LookupPrivilegeNameA(
  6939.     LPCSTR lpSystemName,
  6940.     PLUID   lpLuid,
  6941.     LPSTR lpName,
  6942.     LPDWORD cbName
  6943.     );
  6944. WINADVAPI
  6945. BOOL
  6946. WINAPI
  6947. LookupPrivilegeNameW(
  6948.     LPCWSTR lpSystemName,
  6949.     PLUID   lpLuid,
  6950.     LPWSTR lpName,
  6951.     LPDWORD cbName
  6952.     );
  6953. #ifdef UNICODE
  6954. #define LookupPrivilegeName  LookupPrivilegeNameW
  6955. #else
  6956. #define LookupPrivilegeName  LookupPrivilegeNameA
  6957. #endif // !UNICODE
  6958.  
  6959. WINADVAPI
  6960. BOOL
  6961. WINAPI
  6962. LookupPrivilegeDisplayNameA(
  6963.     LPCSTR lpSystemName,
  6964.     LPCSTR lpName,
  6965.     LPSTR lpDisplayName,
  6966.     LPDWORD cbDisplayName,
  6967.     LPDWORD lpLanguageId
  6968.     );
  6969. WINADVAPI
  6970. BOOL
  6971. WINAPI
  6972. LookupPrivilegeDisplayNameW(
  6973.     LPCWSTR lpSystemName,
  6974.     LPCWSTR lpName,
  6975.     LPWSTR lpDisplayName,
  6976.     LPDWORD cbDisplayName,
  6977.     LPDWORD lpLanguageId
  6978.     );
  6979. #ifdef UNICODE
  6980. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameW
  6981. #else
  6982. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameA
  6983. #endif // !UNICODE
  6984.  
  6985. WINADVAPI
  6986. BOOL
  6987. WINAPI
  6988. AllocateLocallyUniqueId(
  6989.     PLUID Luid
  6990.     );
  6991.  
  6992. WINBASEAPI
  6993. BOOL
  6994. WINAPI
  6995. BuildCommDCBA(
  6996.     LPCSTR lpDef,
  6997.     LPDCB lpDCB
  6998.     );
  6999. WINBASEAPI
  7000. BOOL
  7001. WINAPI
  7002. BuildCommDCBW(
  7003.     LPCWSTR lpDef,
  7004.     LPDCB lpDCB
  7005.     );
  7006. #ifdef UNICODE
  7007. #define BuildCommDCB  BuildCommDCBW
  7008. #else
  7009. #define BuildCommDCB  BuildCommDCBA
  7010. #endif // !UNICODE
  7011.  
  7012. WINBASEAPI
  7013. BOOL
  7014. WINAPI
  7015. BuildCommDCBAndTimeoutsA(
  7016.     LPCSTR lpDef,
  7017.     LPDCB lpDCB,
  7018.     LPCOMMTIMEOUTS lpCommTimeouts
  7019.     );
  7020. WINBASEAPI
  7021. BOOL
  7022. WINAPI
  7023. BuildCommDCBAndTimeoutsW(
  7024.     LPCWSTR lpDef,
  7025.     LPDCB lpDCB,
  7026.     LPCOMMTIMEOUTS lpCommTimeouts
  7027.     );
  7028. #ifdef UNICODE
  7029. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsW
  7030. #else
  7031. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsA
  7032. #endif // !UNICODE
  7033.  
  7034. WINBASEAPI
  7035. BOOL
  7036. WINAPI
  7037. CommConfigDialogA(
  7038.     LPCSTR lpszName,
  7039.     HWND hWnd,
  7040.     LPCOMMCONFIG lpCC
  7041.     );
  7042. WINBASEAPI
  7043. BOOL
  7044. WINAPI
  7045. CommConfigDialogW(
  7046.     LPCWSTR lpszName,
  7047.     HWND hWnd,
  7048.     LPCOMMCONFIG lpCC
  7049.     );
  7050. #ifdef UNICODE
  7051. #define CommConfigDialog  CommConfigDialogW
  7052. #else
  7053. #define CommConfigDialog  CommConfigDialogA
  7054. #endif // !UNICODE
  7055.  
  7056. WINBASEAPI
  7057. BOOL
  7058. WINAPI
  7059. GetDefaultCommConfigA(
  7060.     LPCSTR lpszName,
  7061.     LPCOMMCONFIG lpCC,
  7062.     LPDWORD lpdwSize
  7063.     );
  7064. WINBASEAPI
  7065. BOOL
  7066. WINAPI
  7067. GetDefaultCommConfigW(
  7068.     LPCWSTR lpszName,
  7069.     LPCOMMCONFIG lpCC,
  7070.     LPDWORD lpdwSize
  7071.     );
  7072. #ifdef UNICODE
  7073. #define GetDefaultCommConfig  GetDefaultCommConfigW
  7074. #else
  7075. #define GetDefaultCommConfig  GetDefaultCommConfigA
  7076. #endif // !UNICODE
  7077.  
  7078. WINBASEAPI
  7079. BOOL
  7080. WINAPI
  7081. SetDefaultCommConfigA(
  7082.     LPCSTR lpszName,
  7083.     LPCOMMCONFIG lpCC,
  7084.     DWORD dwSize
  7085.     );
  7086. WINBASEAPI
  7087. BOOL
  7088. WINAPI
  7089. SetDefaultCommConfigW(
  7090.     LPCWSTR lpszName,
  7091.     LPCOMMCONFIG lpCC,
  7092.     DWORD dwSize
  7093.     );
  7094. #ifdef UNICODE
  7095. #define SetDefaultCommConfig  SetDefaultCommConfigW
  7096. #else
  7097. #define SetDefaultCommConfig  SetDefaultCommConfigA
  7098. #endif // !UNICODE
  7099.  
  7100. #define MAX_COMPUTERNAME_LENGTH 15
  7101.  
  7102. WINBASEAPI
  7103. BOOL
  7104. WINAPI
  7105. GetComputerNameA (
  7106.     LPSTR lpBuffer,
  7107.     LPDWORD nSize
  7108.     );
  7109. WINBASEAPI
  7110. BOOL
  7111. WINAPI
  7112. GetComputerNameW (
  7113.     LPWSTR lpBuffer,
  7114.     LPDWORD nSize
  7115.     );
  7116. #ifdef UNICODE
  7117. #define GetComputerName  GetComputerNameW
  7118. #else
  7119. #define GetComputerName  GetComputerNameA
  7120. #endif // !UNICODE
  7121.  
  7122. WINBASEAPI
  7123. BOOL
  7124. WINAPI
  7125. SetComputerNameA (
  7126.     LPCSTR lpComputerName
  7127.     );
  7128. WINBASEAPI
  7129. BOOL
  7130. WINAPI
  7131. SetComputerNameW (
  7132.     LPCWSTR lpComputerName
  7133.     );
  7134. #ifdef UNICODE
  7135. #define SetComputerName  SetComputerNameW
  7136. #else
  7137. #define SetComputerName  SetComputerNameA
  7138. #endif // !UNICODE
  7139.  
  7140. WINADVAPI
  7141. BOOL
  7142. WINAPI
  7143. GetUserNameA (
  7144.     LPSTR lpBuffer,
  7145.     LPDWORD nSize
  7146.     );
  7147. WINADVAPI
  7148. BOOL
  7149. WINAPI
  7150. GetUserNameW (
  7151.     LPWSTR lpBuffer,
  7152.     LPDWORD nSize
  7153.     );
  7154. #ifdef UNICODE
  7155. #define GetUserName  GetUserNameW
  7156. #else
  7157. #define GetUserName  GetUserNameA
  7158. #endif // !UNICODE
  7159.  
  7160. //
  7161. // Logon Support APIs
  7162. //
  7163.  
  7164. #define LOGON32_LOGON_INTERACTIVE   2
  7165. #define LOGON32_LOGON_NETWORK       3
  7166. #define LOGON32_LOGON_BATCH         4
  7167. #define LOGON32_LOGON_SERVICE       5
  7168.  
  7169. #define LOGON32_PROVIDER_DEFAULT    0
  7170. #define LOGON32_PROVIDER_WINNT35    1
  7171. #if(_WIN32_WINNT >= 0x0400)
  7172. #define LOGON32_PROVIDER_WINNT40    2
  7173. #endif /* _WIN32_WINNT >= 0x0400 */
  7174.  
  7175.  
  7176.  
  7177. WINADVAPI
  7178. BOOL
  7179. WINAPI
  7180. LogonUserA (
  7181.     LPSTR lpszUsername,
  7182.     LPSTR lpszDomain,
  7183.     LPSTR lpszPassword,
  7184.     DWORD dwLogonType,
  7185.     DWORD dwLogonProvider,
  7186.     PHANDLE phToken
  7187.     );
  7188. WINADVAPI
  7189. BOOL
  7190. WINAPI
  7191. LogonUserW (
  7192.     LPWSTR lpszUsername,
  7193.     LPWSTR lpszDomain,
  7194.     LPWSTR lpszPassword,
  7195.     DWORD dwLogonType,
  7196.     DWORD dwLogonProvider,
  7197.     PHANDLE phToken
  7198.     );
  7199. #ifdef UNICODE
  7200. #define LogonUser  LogonUserW
  7201. #else
  7202. #define LogonUser  LogonUserA
  7203. #endif // !UNICODE
  7204.  
  7205. WINADVAPI
  7206. BOOL
  7207. WINAPI
  7208. ImpersonateLoggedOnUser(
  7209.     HANDLE  hToken
  7210.     );
  7211.  
  7212. WINADVAPI
  7213. BOOL
  7214. WINAPI
  7215. CreateProcessAsUserA (
  7216.     HANDLE hToken,
  7217.     LPCSTR lpApplicationName,
  7218.     LPSTR lpCommandLine,
  7219.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  7220.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  7221.     BOOL bInheritHandles,
  7222.     DWORD dwCreationFlags,
  7223.     LPVOID lpEnvironment,
  7224.     LPCSTR lpCurrentDirectory,
  7225.     LPSTARTUPINFOA lpStartupInfo,
  7226.     LPPROCESS_INFORMATION lpProcessInformation
  7227.     );
  7228. WINADVAPI
  7229. BOOL
  7230. WINAPI
  7231. CreateProcessAsUserW (
  7232.     HANDLE hToken,
  7233.     LPCWSTR lpApplicationName,
  7234.     LPWSTR lpCommandLine,
  7235.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  7236.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  7237.     BOOL bInheritHandles,
  7238.     DWORD dwCreationFlags,
  7239.     LPVOID lpEnvironment,
  7240.     LPCWSTR lpCurrentDirectory,
  7241.     LPSTARTUPINFOW lpStartupInfo,
  7242.     LPPROCESS_INFORMATION lpProcessInformation
  7243.     );
  7244. #ifdef UNICODE
  7245. #define CreateProcessAsUser  CreateProcessAsUserW
  7246. #else
  7247. #define CreateProcessAsUser  CreateProcessAsUserA
  7248. #endif // !UNICODE
  7249.  
  7250. WINADVAPI
  7251. BOOL
  7252. WINAPI
  7253. DuplicateTokenEx(
  7254.     HANDLE hExistingToken,
  7255.     DWORD dwDesiredAccess,
  7256.     LPSECURITY_ATTRIBUTES lpTokenAttributes,
  7257.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  7258.     TOKEN_TYPE TokenType,
  7259.     PHANDLE phNewToken);
  7260.  
  7261.  
  7262. #if(_WIN32_WINNT >= 0x0400)
  7263. //
  7264. // Plug-and-Play API's
  7265. //
  7266.  
  7267. #define HW_PROFILE_GUIDLEN         39      // 36-characters plus NULL terminator
  7268. #define MAX_PROFILE_LEN            80
  7269.  
  7270. #define DOCKINFO_UNDOCKED          (0x1)
  7271. #define DOCKINFO_DOCKED            (0x2)
  7272. #define DOCKINFO_USER_SUPPLIED     (0x4)
  7273. #define DOCKINFO_USER_UNDOCKED     (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
  7274. #define DOCKINFO_USER_DOCKED       (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
  7275.  
  7276. typedef struct tagHW_PROFILE_INFOA {
  7277.     DWORD  dwDockInfo;
  7278.     CHAR   szHwProfileGuid[HW_PROFILE_GUIDLEN];
  7279.     CHAR   szHwProfileName[MAX_PROFILE_LEN];
  7280. } HW_PROFILE_INFOA, *LPHW_PROFILE_INFOA;
  7281. typedef struct tagHW_PROFILE_INFOW {
  7282.     DWORD  dwDockInfo;
  7283.     WCHAR  szHwProfileGuid[HW_PROFILE_GUIDLEN];
  7284.     WCHAR  szHwProfileName[MAX_PROFILE_LEN];
  7285. } HW_PROFILE_INFOW, *LPHW_PROFILE_INFOW;
  7286. #ifdef UNICODE
  7287. typedef HW_PROFILE_INFOW HW_PROFILE_INFO;
  7288. typedef LPHW_PROFILE_INFOW LPHW_PROFILE_INFO;
  7289. #else
  7290. typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
  7291. typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
  7292. #endif // UNICODE
  7293.  
  7294.  
  7295. WINADVAPI
  7296. BOOL
  7297. WINAPI
  7298. GetCurrentHwProfileA (
  7299.     OUT LPHW_PROFILE_INFOA  lpHwProfileInfo
  7300.     );
  7301. WINADVAPI
  7302. BOOL
  7303. WINAPI
  7304. GetCurrentHwProfileW (
  7305.     OUT LPHW_PROFILE_INFOW  lpHwProfileInfo
  7306.     );
  7307. #ifdef UNICODE
  7308. #define GetCurrentHwProfile  GetCurrentHwProfileW
  7309. #else
  7310. #define GetCurrentHwProfile  GetCurrentHwProfileA
  7311. #endif // !UNICODE
  7312. #endif /* _WIN32_WINNT >= 0x0400 */
  7313.  
  7314. //
  7315. // Performance counter API's
  7316. //
  7317.  
  7318. WINBASEAPI
  7319. BOOL
  7320. WINAPI
  7321. QueryPerformanceCounter(
  7322.     LARGE_INTEGER *lpPerformanceCount
  7323.     );
  7324.  
  7325. WINBASEAPI
  7326. BOOL
  7327. WINAPI
  7328. QueryPerformanceFrequency(
  7329.     LARGE_INTEGER *lpFrequency
  7330.     );
  7331.  
  7332. typedef struct _OSVERSIONINFOA {
  7333.     DWORD dwOSVersionInfoSize;
  7334.     DWORD dwMajorVersion;
  7335.     DWORD dwMinorVersion;
  7336.     DWORD dwBuildNumber;
  7337.     DWORD dwPlatformId;
  7338.     CHAR   szCSDVersion[ 128 ];       // Maintenance string for PSS usage
  7339. } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
  7340. typedef struct _OSVERSIONINFOW {
  7341.     DWORD dwOSVersionInfoSize;
  7342.     DWORD dwMajorVersion;
  7343.     DWORD dwMinorVersion;
  7344.     DWORD dwBuildNumber;
  7345.     DWORD dwPlatformId;
  7346.     WCHAR  szCSDVersion[ 128 ];       // Maintenance string for PSS usage
  7347. } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW;
  7348. #ifdef UNICODE
  7349. typedef OSVERSIONINFOW OSVERSIONINFO;
  7350. typedef POSVERSIONINFOW POSVERSIONINFO;
  7351. typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
  7352. #else
  7353. typedef OSVERSIONINFOA OSVERSIONINFO;
  7354. typedef POSVERSIONINFOA POSVERSIONINFO;
  7355. typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
  7356. #endif // UNICODE
  7357.  
  7358. //
  7359. // dwPlatformId defines:
  7360. //
  7361.  
  7362. #define VER_PLATFORM_WIN32s             0
  7363. #define VER_PLATFORM_WIN32_WINDOWS      1
  7364. #define VER_PLATFORM_WIN32_NT           2
  7365.  
  7366.  
  7367. WINBASEAPI
  7368. BOOL
  7369. WINAPI
  7370. GetVersionExA(
  7371.     LPOSVERSIONINFOA lpVersionInformation
  7372.     );
  7373. WINBASEAPI
  7374. BOOL
  7375. WINAPI
  7376. GetVersionExW(
  7377.     LPOSVERSIONINFOW lpVersionInformation
  7378.     );
  7379. #ifdef UNICODE
  7380. #define GetVersionEx  GetVersionExW
  7381. #else
  7382. #define GetVersionEx  GetVersionExA
  7383. #endif // !UNICODE
  7384.  
  7385.  
  7386. // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
  7387. // API functions.
  7388. //
  7389.  
  7390.  
  7391. #include <winerror.h>
  7392.  
  7393.  
  7394. /* Abnormal termination codes */
  7395.  
  7396. #define TC_NORMAL       0
  7397. #define TC_HARDERR      1
  7398. #define TC_GP_TRAP      2
  7399. #define TC_SIGNAL       3
  7400.  
  7401. #if(WINVER >= 0x0400)
  7402. //
  7403. // Power Management APIs
  7404. //
  7405.  
  7406. #define AC_LINE_OFFLINE                 0x00
  7407. #define AC_LINE_ONLINE                  0x01
  7408. #define AC_LINE_BACKUP_POWER            0x02
  7409. #define AC_LINE_UNKNOWN                 0xFF
  7410.  
  7411. #define BATTERY_FLAG_HIGH               0x01
  7412. #define BATTERY_FLAG_LOW                0x02
  7413. #define BATTERY_FLAG_CRITICAL           0x04
  7414. #define BATTERY_FLAG_CHARGING           0x08
  7415. #define BATTERY_FLAG_NO_BATTERY         0x80
  7416. #define BATTERY_FLAG_UNKNOWN            0xFF
  7417.  
  7418. #define BATTERY_PERCENTAGE_UNKNOWN      0xFF
  7419.  
  7420. #define BATTERY_LIFE_UNKNOWN        0xFFFFFFFF
  7421.  
  7422. typedef struct _SYSTEM_POWER_STATUS {
  7423.     BYTE ACLineStatus;
  7424.     BYTE BatteryFlag;
  7425.     BYTE BatteryLifePercent;
  7426.     BYTE Reserved1;
  7427.     DWORD BatteryLifeTime;
  7428.     DWORD BatteryFullLifeTime;
  7429. }   SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
  7430.  
  7431. BOOL
  7432. WINAPI
  7433. GetSystemPowerStatus(
  7434.     LPSYSTEM_POWER_STATUS lpSystemPowerStatus
  7435.     );
  7436.  
  7437. BOOL
  7438. WINAPI
  7439. SetSystemPowerState(
  7440.     BOOL fSuspend,
  7441.     BOOL fForce
  7442.     );
  7443.  
  7444. #endif /* WINVER >= 0x0400 */
  7445.  
  7446.  
  7447.  
  7448.  
  7449. ///////////////////////////////////////////////////////////////
  7450. //                                                           //
  7451. //      Win Certificate API and Structures                   //
  7452. //                                                           //
  7453. ///////////////////////////////////////////////////////////////
  7454.  
  7455. //
  7456. // Structures
  7457. //
  7458.  
  7459. typedef struct _WIN_CERTIFICATE {
  7460.     DWORD       dwLength;
  7461.     WORD        wRevision;
  7462.     WORD        wCertificateType;   // WIN_CERT_TYPE_xxx
  7463.     BYTE        bCertificate[ANYSIZE_ARRAY];
  7464. } WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
  7465.  
  7466. //
  7467. // Currently, the only defined certificate revision is WIN_CERT_REVISION_1_0
  7468. //
  7469.  
  7470. #define WIN_CERT_REVISION_1_0           (0x0100)
  7471.  
  7472. //
  7473. // Possible certificate types are specified by the following values
  7474. //
  7475.  
  7476. #define  WIN_CERT_TYPE_X509               (0x0001)   // bCertificate contains an X.509 Certificate
  7477. #define  WIN_CERT_TYPE_PKCS_SIGNED_DATA   (0x0002)   // bCertificate contains a PKCS SignedData structure
  7478. #define  WIN_CERT_TYPE_RESERVED_1         (0x0003)   // Reserved
  7479.  
  7480. //
  7481. // API
  7482. //
  7483.  
  7484.  
  7485.  
  7486.  
  7487. BOOL
  7488. WINAPI
  7489. WinSubmitCertificate(
  7490.     LPWIN_CERTIFICATE lpCertificate
  7491.     );
  7492.  
  7493.  
  7494.  
  7495. ///////////////////////////////////////////////////////////////
  7496. //                                                           //
  7497. //             Trust API and Structures                      //
  7498. //                                                           //
  7499. ///////////////////////////////////////////////////////////////
  7500.  
  7501. LONG
  7502. WINAPI
  7503. WinVerifyTrust(
  7504.     HWND    hwnd,
  7505.     GUID *  ActionID,
  7506.     LPVOID  ActionData
  7507.     );
  7508.  
  7509.  
  7510. BOOL
  7511. WINAPI
  7512. WinLoadTrustProvider(
  7513.     GUID * ActionID
  7514.     );
  7515.  
  7516. ///////////////////////////////////////////////////////////////
  7517. //                                                           //
  7518. //             Common Trust API Data Structures              //
  7519. //                                                           //
  7520. ///////////////////////////////////////////////////////////////
  7521.  
  7522.  
  7523. //
  7524. // Data type commonly used in ActionData structures
  7525. //
  7526.  
  7527. typedef LPVOID WIN_TRUST_SUBJECT;
  7528.  
  7529. //
  7530. // Two commonly used ActionData structures
  7531. //
  7532.  
  7533. typedef struct _WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT {
  7534.  
  7535.     HANDLE            hClientToken;
  7536.     GUID *            SubjectType;
  7537.     WIN_TRUST_SUBJECT Subject;
  7538.  
  7539. } WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT, *LPWIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT ;
  7540.  
  7541.  
  7542. typedef struct _WIN_TRUST_ACTDATA_SUBJECT_ONLY {
  7543.  
  7544.     GUID *            SubjectType;
  7545.     WIN_TRUST_SUBJECT Subject;
  7546.  
  7547. } WIN_TRUST_ACTDATA_SUBJECT_ONLY, *LPWIN_TRUST_ACTDATA_SUBJECT_ONLY;
  7548.  
  7549.  
  7550. ////////////////////////////////////////////////////////////////////
  7551. //                                                                 /
  7552. //      SUBJECT FORM DEFINITIONS                                   /
  7553. //                                                                 /
  7554. ////////////////////////////////////////////////////////////////////
  7555.  
  7556. ////////////////////////////////////////////////////////////////////
  7557. //                                                                 /
  7558. // Currently defined Subject Type Identifiers.  All of the below   /
  7559. // use the WIN_TRUST_SUBJECT_FILE subject form, defined below.     /
  7560. //                                                                 /
  7561. ////////////////////////////////////////////////////////////////////
  7562.  
  7563. /* RawFile == 959dc450-8d9e-11cf-8736-00aa00a485eb */
  7564. #define WIN_TRUST_SUBJTYPE_RAW_FILE                              \
  7565.             { 0x959dc450,                                        \
  7566.               0x8d9e,                                            \
  7567.               0x11cf,                                            \
  7568.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7569.             }
  7570.  
  7571. /* PeImage == 43c9a1e0-8da0-11cf-8736-00aa00a485eb */
  7572. #define WIN_TRUST_SUBJTYPE_PE_IMAGE                              \
  7573.             { 0x43c9a1e0,                                        \
  7574.               0x8da0,                                            \
  7575.               0x11cf,                                            \
  7576.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7577.             }
  7578.  
  7579.  
  7580. /* JavaClass = 08ad3990-8da1-11cf-8736-00aa00a485eb */
  7581. #define WIN_TRUST_SUBJTYPE_JAVA_CLASS                            \
  7582.             { 0x08ad3990,                                        \
  7583.               0x8da1,                                            \
  7584.               0x11cf,                                            \
  7585.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7586.             }
  7587. /* Cabinet = d17c5374-a392-11cf-9df5-00aa00c184e0 */
  7588. #define WIN_TRUST_SUBJTYPE_CABINET                               \
  7589.             { 0xd17c5374,                                        \
  7590.               0xa392,                                            \
  7591.               0x11cf,                                            \
  7592.               { 0x9d, 0xf5, 0x0, 0xaa, 0x0, 0xc1, 0x84, 0xe0 }   \
  7593.             }
  7594.  
  7595. //
  7596. // Associated Subject Data Structure:
  7597. //
  7598.  
  7599. typedef struct _WIN_TRUST_SUBJECT_FILE {
  7600.  
  7601.     HANDLE  hFile;
  7602.     LPCWSTR lpPath;
  7603.  
  7604. } WIN_TRUST_SUBJECT_FILE, *LPWIN_TRUST_SUBJECT_FILE;
  7605.  
  7606.  
  7607.  
  7608.  
  7609. ////////////////////////////////////////////////////////////////////
  7610. //                                                                 /
  7611. // The following subject types use the                             /
  7612. // WIN_TRUST_SUBJECT_FILE_AND_DISPLAY subject type, defined        /
  7613. // below.                                                          /
  7614. //                                                                 /
  7615. ////////////////////////////////////////////////////////////////////
  7616.  
  7617. #define WIN_TRUST_SUBJTYPE_RAW_FILEEX                            \
  7618.             { 0x6f458110,                                        \
  7619.               0xc2f1,                                            \
  7620.               0x11cf,                                            \
  7621.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  7622.             }
  7623.  
  7624. #define WIN_TRUST_SUBJTYPE_PE_IMAGEEX                            \
  7625.             { 0x6f458111,                                        \
  7626.               0xc2f1,                                            \
  7627.               0x11cf,                                            \
  7628.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  7629.             }
  7630.  
  7631. #define WIN_TRUST_SUBJTYPE_JAVA_CLASSEX                          \
  7632.             { 0x6f458113,                                        \
  7633.               0xc2f1,                                            \
  7634.               0x11cf,                                            \
  7635.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  7636.             }
  7637.  
  7638. #define WIN_TRUST_SUBJTYPE_CABINETEX                             \
  7639.             { 0x6f458114,                                        \
  7640.               0xc2f1,                                            \
  7641.               0x11cf,                                            \
  7642.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  7643.             }
  7644.  
  7645. //
  7646. // Associated Subject Data Structure:
  7647. //
  7648.  
  7649. typedef struct _WIN_TRUST_SUBJECT_FILE_AND_DISPLAY {
  7650.  
  7651.     HANDLE  hFile;              // handle to the open file if you got it
  7652.     LPCWSTR lpPath;             // the path to open if you don't
  7653.     LPCWSTR lpDisplayName;      // (optional) display name to show to user 
  7654.                                 //      in place of path
  7655.  
  7656. } WIN_TRUST_SUBJECT_FILE_AND_DISPLAY, *LPWIN_TRUST_SUBJECT_FILE_AND_DISPLAY;
  7657.  
  7658.  
  7659. ////////////////////////////////////////////////////////////////////
  7660. //                                                                 /
  7661. // Other subject types:                                            /
  7662. //                                                                 /
  7663. ////////////////////////////////////////////////////////////////////
  7664.  
  7665. /* OleStorage == c257e740-8da0-11cf-8736-00aa00a485eb */
  7666. #define WIN_TRUST_SUBJTYPE_OLE_STORAGE                           \
  7667.             { 0xc257e740,                                        \
  7668.               0x8da0,                                            \
  7669.               0x11cf,                                            \
  7670.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7671.             }
  7672.  
  7673.  
  7674. ////////////////////////////////////////////////////////////////////
  7675. //                                                                 /
  7676. //      TRUST PROVIDER SPECIFIC DEFINITIONS                        /
  7677. //                                                                 /
  7678. //                                                                 /
  7679. //      Each trust provider will have the following                /
  7680. //      sections defined:                                          /
  7681. //                                                                 /
  7682. //      Actions - What actions are supported by the trust          /
  7683. //          provider.                                              /
  7684. //                                                                 /
  7685. //      SubjectForms - Subjects that may be evaluated by this      /
  7686. //          trust provider.                                        /
  7687. //                                                                 /
  7688. //                     and                                         /
  7689. //                                                                 /
  7690. //      Data structures to support the subject forms.              /
  7691. //                                                                 /
  7692. //                                                                 /
  7693. ////////////////////////////////////////////////////////////////////
  7694.  
  7695.  
  7696. ////////////////////////////////////////////////////////////////////
  7697. //                                                                 /
  7698. //             Software Publisher Trust Provider                   /
  7699. //                                                                 /
  7700. ////////////////////////////////////////////////////////////////////
  7701.  
  7702. //
  7703. // Actions:
  7704. //
  7705.  
  7706. /* TrustedPublisher == 66426730-8da1-11cf-8736-00aa00a485eb */
  7707. #define WIN_SPUB_ACTION_TRUSTED_PUBLISHER                        \
  7708.             { 0x66426730,                                        \
  7709.               0x8da1,                                            \
  7710.               0x11cf,                                            \
  7711.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7712.             }
  7713.  
  7714. /* NtActivateImage == 8bc96b00-8da1-11cf-8736-00aa00a485eb */
  7715. #define     WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE                    \
  7716.             { 0x8bc96b00,                                        \
  7717.               0x8da1,                                            \
  7718.               0x11cf,                                            \
  7719.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7720.             }
  7721.  
  7722. /* PublishedSoftware == 64b9d180-8da2-11cf-8736-00aa00a485eb */
  7723. #define WIN_SPUB_ACTION_PUBLISHED_SOFTWARE                       \
  7724.             { 0x64b9d180,                                        \
  7725.               0x8da2,                                            \
  7726.               0x11cf,                                            \
  7727.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  7728.             }
  7729.  
  7730. //
  7731. // Data Structures:
  7732. //
  7733. // WIN_SPUB_ACTION_TRUSTED_PUBLISHER:
  7734. //
  7735. //      Uses WIN_SPUB_TRUSTED_PUBLISHER_DATA
  7736. //
  7737. // WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE:
  7738. //
  7739. //      Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
  7740. //
  7741. // WIN_SPUB_ACTION_PUBLISHED_SOFTWARE:
  7742. //
  7743. //      Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
  7744. //
  7745.  
  7746. typedef struct _WIN_SPUB_TRUSTED_PUBLISHER_DATA {
  7747.  
  7748.     HANDLE            hClientToken;
  7749.     LPWIN_CERTIFICATE lpCertificate;
  7750.  
  7751. } WIN_SPUB_TRUSTED_PUBLISHER_DATA, *LPWIN_SPUB_TRUSTED_PUBLISHER_DATA;
  7752.  
  7753. #ifdef __cplusplus
  7754. }
  7755. #endif
  7756.  
  7757. #pragma option pop
  7758. #endif // _WINBASE_
  7759.